我已将hbm.xml
配置为2个集合:两个集合inverse=true
的集合。
<class class="C0">
<properties/>
<set inverse="true">
<one-to-many class="C1"/>
</set>
</class>
<class class="C1">
<properties/>
<set inverse="true" >
<one-to-many class="C2"/>
</set>
</class>
<class class="C2">
...
<!-- No collection there -->
</class>
当我通过C0
找到我的父亲集合SET
时,我在C1
集合中找到了很多元素但是我的C2
集合中的所有项目都不包含每个项目一个元素(每个项目等待2个元素)。
这是一个错误吗?或者我错了吗?
如果可以提供帮助,我可以将您的文件发送给您。
Hibernate版本:hibernate-core-4.3.8.Final.jar
C3P0 :hibernate-c3p0-4.3.8.Final.jar
JAVA 8.0
提前谢谢。
答案 0 :(得分:0)
得到了!!!
出现问题的原因是我在C2类&#39; ID上的equals方法忘记了属性。
解释示例。
我要比较的对象有这个组合id:id1(类C0),id2(类C1),id3(类C2)。
和我的等于C2类ID的equals方法就像这样
id1.equals(other.id1) && id2.equals(other.id2)
所以当hibernate到达数据库,C2对象(id1,id2,id3)时,他会比较hese id并说obj1.id等于obj2.id,这两个对象是相同的。所以hibernate只选择两个对象中的一个。这就是为什么我有一个对象。
解决方案:我添加了对象C2的类ID的equals方法,缺少id3,所有东西都很好。
id1.equals(other.id1) && id2.equals(other.id2) && id3.equals(other.id3)
整理:
这就是全部。