数据库结构说明如下:
主表一[员工表]:员工登录名(主键)、员工姓名.....;
主表二[项目表]:项目ID(主键)、项目名称......;
关系表[项目成员表]:员工登录名(主键、外键)、项目ID(主键、外键)、是否项目负责人、是否程序员.....;
项目成员类:
public class ProjectMember implements Serializable
{
// ---------------------------------------------------------------------------------------
private Project project;
private Employee employee;
private String isManager;
private String isCoder;
private String isTester;
// ---------------------------------------------------------------------------------------
//是否为管理员
public void setIsManager(String isManager)
{
this.isManager = isManager;
}
public String getIsManager()
{
return(this.isManager);
}
// ---------------------------------------------------------------------------------------
//是否为程序员
public void setIsCoder(String isCoder)
{
this.isCoder = isCoder;
}
public String getIsCoder()
{
return(this.isCoder);
}
// ---------------------------------------------------------------------------------------
//是否为测试员
public void setIsTester(String isTester)
{
this.isTester = isTester;
}
public String getIsTester()
{
return(this.isTester);
}
// ---------------------------------------------------------------------------------------
//成员项目
public void setProject(Project project)
{
this.project = project;
}
public Project getProject()
{
return(this.project);
}
// ---------------------------------------------------------------------------------------
//成员信息
public void setEmployee(Employee employee)
{
this.employee = employee;
}
public Employee getEmployee()
{
return(this.employee);
}
// ---------------------------------------------------------------------------------------
}项目实体类:public class Project implements Serializable
{
// ---------------------------------------------------------------------------------------
private String projectId;
private String projectName;
private Date begTime;
private Date schEndTime;
private Date factEndTime;
private String projectState;
    private Set projectMembers = new HashSet();
// ---------------------------------------------------------------------------------------
//项目ID
public void setProjectId(String projectId)
{
this.projectId = projectId;
}
public String getProjectId()
{
return(this.projectId);
}
// ---------------------------------------------------------------------------------------
//项目名称
public void setProjectName(String projectName)
{
this.projectName = projectName;
}
public String getProjectName()
{
return(this.projectName);
}
// ---------------------------------------------------------------------------------------
//项目开始时间
public void setBegTime(Date begTime)
{
this.begTime = begTime;
}
public Date getBegTime()
{
return(this.begTime);
}
// ---------------------------------------------------------------------------------------
//预计项目结束时间
public void setSchEndTime(Date schEndTime)
{
this.schEndTime = schEndTime;
}
public Date getSchEndTime()
{
return(this.schEndTime);
}
// ---------------------------------------------------------------------------------------
//实际项目结束时间
public void setFactEndTime(Date factEndTime)
{
this.factEndTime = factEndTime;
}
public Date getFactEndTime()
{
return(this.factEndTime);
}
// ---------------------------------------------------------------------------------------
//项目状态
public void setProjectState(String projectState)
{
this.projectState = projectState;
}
public String getProjectState()
{
return(this.projectState);
}
// ---------------------------------------------------------------------------------------
//项目成员
public void setProjectMembers(Set projectMembers)
{
this.projectMembers = projectMembers;
}
public Set getProjectMembers()
{
return(this.projectMembers);
}
// ---------------------------------------------------------------------------------------
}项目关系映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
          "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.tcs.bean.entitybean">
  <class name="Project" dynamic-update="true" table="tcsproject">
  
    <id name="projectId" type="string" column="projectId">
      <generator class="increment"/>
    </id>
    <property name="projectName" type="string" >
      <column name="projectName" length="50" not-null="true" />
    </property>
    <property name="begTime" type="date" >
      <column name="begTime" not-null="false" />
    </property>
    <property name="schEndTime" type="date" >
      <column name="schEndTime" not-null="false" />
    </property>    
    <property name="factEndTime" type="date" >
      <column name="factEndTime" not-null="false" />
    </property>        
    <property name="projectState" type="string" >
      <column name="projectState" length="10" not-null="true" />
    </property>
<set name="projectMembers"  table="tcsteammember">
<key column="ProjectId" />
<composite-element class="ProjectMember" >
<parent name="project" />
<many-to-one name="employee" class="Employee" column="LoginName" not-null="true"/>
<property name="isManager" column="IsManager" type="string" not-null="true" />
<property name="isManager" column="IsCoder" type="string" not-null="true" />
<property name="isManager" column="IsTester" type="string" not-null="true" />
</composite-element> 
</set>
  </class>
</hibernate-mapping>
问题:我查出所有项目实体对象是可以的,但是我只要一访问项目实体对象里的项目成员对象就出错了,报的错误如下:org.apache.jasper.JasperException: failed to lazily initialize a collection of role: com.tcs.bean.entitybean.Project.projectMembers, no session or session was closed
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.tcs.common.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:61)请教我是那里错了?