在Hibernate中映射具有2个导致问题的列表的对象

时间:2011-05-10 15:45:07

标签: java hibernate hbm

我正在尝试使用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正确存储这两个列表,但我无法弄明白。

任何帮助?

1 个答案:

答案 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使用相同的查询来映射listotherList,那么它如何为同一查询返回不同的结果?