3

我正在尝试映射一个类

Class Node {
Node parent;
List<Node> children;
}

我尝试了多对一和一对多的各种组合,但似乎没有任何效果。我会粘贴我的映射文件,但是我尝试了很多东西,以至于我不知道要粘贴哪一个。请帮助我:(如果我使用SET而不是LIST,我也成功映射了类,但是当我使用列表时,我无法更新用于存储列表索引的列。非常感谢.

4

1 回答 1

2

您不能直接更新列表索引,因为它是通过检查对象在父子列表中的位置得出的。如果一个对象在列表中的索引 10 处,并且list-index属性设置为 5,Hibernate 应该使用哪个?

所以通常你告诉 Hibernate 使用哪一列来存储列表索引,然后忘记它。

但是,如果您想将list-index属性映射到您的对象以便直接访问它(以只读方式,例如getIndexInList()),则必须使用insert=false update=false.

我对 XML 映射有点生疏,但这里有一些接近我认为可行的方法。如果您有问题以及收到的错误消息,请告诉我。

<hibernate-mapping>
 <class name="com.example.Node" table="node">
    <id name="id" column="nodeId">
        <generator class="native"/>
    </id>

    <property
        name="listIndex"
        column="listIndex"
        insert="false"
        update="false" />

    <many-to-one
        name="parent"
        column="parentNodeId"
        class="com.example.Node"/>

    <list name="children" inverse="true" cascade="all">
        <key column="parentNodeId"/>
        <list-index column="listIndex"/>
        <one-to-many class="com.example.Node"/>
    </list>

 </class>
</hibernate-mapping>
于 2011-03-23T20:29:48.860 回答