做一对多双向关联查询的时候报了如下的错误:
在网上查了一下说是关联的两个表之间的数据出现错误,但是我两个表中的数据没错啊,下面是两个表的数据:
下面是PO类和映射关系:
一的一端:
public class SysRequire implements java.io.Serializable{
private Integer id;
private String rcode;
private String rteam;
private String rsysname;
private String rproname;
private String rmark;
private String rlevel;
private String rtype;
private String fileName;
private String url;
private Organization org;
private Set<SysKidPoint> sysKidPoints=new HashSet<SysKidPoint>();
/*set/get*/
<set name="sysKidPoints" inverse="true" cascade="save-update" lazy="false">
<key column="sysRequreId"></key>
<one-to-many class="cn.kexin.parawork.domain.SysKidPoint"/>
</set>
多的一端:
public class SysKidPoint implements java.io.Serializable {
private Integer id;
private String pointcount;
private String genre;
private String reusedegree;
private String intricate;
private String changetype;
private String FP;
private String US;
private SysRequire sysRequire;
<many-to-one name="sysRequire" cascade="save-update" class="cn.kexin.parawork.domain.SysKidPoint" lazy="false">
<column name="sysRequreId"></column>
</many-to-one>
下面是查询时候的代码:
SysRequire sysRequire=sysRequireService.findSysRequireById(rid);
Set<SysKidPoint> setList=sysRequire.getSysKidPoints();
Iterator it=setList.iterator();
while(it.hasNext()){
SysKidPoint s=(SysKidPoint)it.next();
System.out.println(s.getChangetype());
}
而且把<set name="sysKidPoints" inverse="true" cascade="save-update" lazy="false">
<key column="sysRequreId"></key>
<one-to-many class="cn.kexin.parawork.domain.SysKidPoint"/>
</set>里面的 lazy="false"去掉之后就报no session or session closed的错误。
改成单项的也是上面的错误,昨天下午搞到现在还是不行,而且改成单向关联也不行,求大牛们给点提示吧。
搞了快一天的问题,各种测试各种出问题,其实就是我配置出错了,刚才无意间看到了
<many-to-one name="sysRequire" cascade="save-update" class="cn.kexin.parawork.domain.SysKidPoint" lazy="false">
<column name="sysRequreId"></column>
</many-to-one>
这里面的class配错了,给的是多的一方,其实应该是一的一方。