gpt4 book ai didi

java - Hibernate 自引用映射之谜

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:38:27 26 4
gpt4 key购买 nike

我正在尝试映射一个类

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>

关于java - Hibernate 自引用映射之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5410341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com