我正在尝试使用hbm.xml文件保存具有2个类似列表的对象。下面是我的模型对象和HBM:
public class MyClass {
...
private List<MyType> list;
private List<MyType> otherList;
...
}
本节的HMB如下:
<list name="list" cascade="all-delete-orphan"
lazy="false">
<key column="USER_ID" />
<list-index column="index" />
<one-to-many class="path.to.MyType" />
</list>
<list name="otherList" cascade="all-delete-orphan"
lazy="false">
<key column="USER_ID" />
<list-index column="index" />
<one-to-many class="path.to.MyType" />
</list>
然而,当这个对象从数据库中填充时,我希望在'list'中出现的任何内容也会出现在'otherList'中。我想我错过了一个简单的配置更改,以允许hibernate正确存储这两个列表,但我无法弄明白。
任何帮助?
答案 0 :(得分:2)
<list>
包含相同的内容,因为您告诉Hibernate在两个实例中使用相同的path.to.MyType
映射相同的类(<key column="USER_ID">
)。你确定你没有在Hibernate映射中出错吗?
从概念上讲,Hibernate将实现这些集合的功能是发出像
这样的查询SELECT m.* from MyType m where m.USER_ID = this.USER_ID
如果您告诉Hibernate使用相同的查询来映射list
和otherList
,那么它如何为同一查询返回不同的结果?