我正在尝试映射一个类
Class Node {
Node parent;
List<Node> children;
}
我尝试了多对一和一对多的各种组合,但似乎没有任何效果。我会粘贴我的映射文件,但是我尝试了很多东西,以至于我不知道要粘贴哪一个。请帮助我:(如果我使用SET而不是LIST,我也成功映射了类,但是当我使用列表时,我无法更新用于存储列表索引的列。非常感谢.
我正在尝试映射一个类
Class Node {
Node parent;
List<Node> children;
}
我尝试了多对一和一对多的各种组合,但似乎没有任何效果。我会粘贴我的映射文件,但是我尝试了很多东西,以至于我不知道要粘贴哪一个。请帮助我:(如果我使用SET而不是LIST,我也成功映射了类,但是当我使用列表时,我无法更新用于存储列表索引的列。非常感谢.
您不能直接更新列表索引,因为它是通过检查对象在父子列表中的位置得出的。如果一个对象在列表中的索引 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>