Public class Parent{
private List child1;
/**
* @hibernate.list inverse="true" lazy="false" cascade="all"
* @hibernate.collection-index column="ID"
* @hibernate.collection-one-to-many
* class="com.test.po.Child"
* @hibernate.collection-key column="parentId"
*/
public List getChild1() {
return child1;
}
public void setChild1(List child1) {
child1= child1;
}
}
Parent.hbm.xml
<list
name="leg"
lazy="false"
inverse="true"
cascade="all"
>
<key
column="ParentId"
>
</key>
<index
column="ID"
/>
<one-to-many
class="com.test.po.Child"
/>
</list>
但用hibernate查询Parent,从而级联查询出child的时,child的数量却比数据库的实际数据多,多的child,都是null。
Query qry = session.createQuery(" From Parent p Where p.id = 1 order by id");//id为Long型
List list = qry.list();
debug的时候,list下的Parent 下的child,数据库实际对应是2条记录,但child在parent中对应的那个list.size()却是3,且第一个就是null,第二三个才是数据库的记录。后经反复测试发现,parent中childList的size()跟child表的id有关,child表的id也是Long,主键策略是native的,childList的size()总是max(child.id)+1,去掉数据库实际的数据条数,其余的都是null。
hibernate3.jar是3.2.1ga 的.数据库是Oracle10g,parent和child表都无sequence。后该主键生成策略为sequence后,也给parent和child建立相应的sequence后,问题依然如此。
不胜感谢
private List child1;
/**
* @hibernate.list inverse="true" lazy="false" cascade="all"
* @hibernate.collection-index column="ID"
* @hibernate.collection-one-to-many
* class="com.test.po.Child"
* @hibernate.collection-key column="parentId"
*/
public List getChild1() {
return child1;
}
public void setChild1(List child1) {
child1= child1;
}
}
Parent.hbm.xml
<list
name="leg"
lazy="false"
inverse="true"
cascade="all"
>
<key
column="ParentId"
>
</key>
<index
column="ID"
/>
<one-to-many
class="com.test.po.Child"
/>
</list>
但用hibernate查询Parent,从而级联查询出child的时,child的数量却比数据库的实际数据多,多的child,都是null。
Query qry = session.createQuery(" From Parent p Where p.id = 1 order by id");//id为Long型
List list = qry.list();
debug的时候,list下的Parent 下的child,数据库实际对应是2条记录,但child在parent中对应的那个list.size()却是3,且第一个就是null,第二三个才是数据库的记录。后经反复测试发现,parent中childList的size()跟child表的id有关,child表的id也是Long,主键策略是native的,childList的size()总是max(child.id)+1,去掉数据库实际的数据条数,其余的都是null。
hibernate3.jar是3.2.1ga 的.数据库是Oracle10g,parent和child表都无sequence。后该主键生成策略为sequence后,也给parent和child建立相应的sequence后,问题依然如此。
不胜感谢