gpt4 book ai didi

java - Hibernate交叉引用同一类的多对多父/子映射

转载 作者:太空宇宙 更新时间:2023-11-04 08:57:47 43 4
gpt4 key购买 nike

我在让父/子关系适用于单个类的层次结构时遇到了一个主要问题。基本上我必须像这样表示一个服务器树:

Server A
Server B
Server C
Server D
Server E
Server C
Server D
Server F
Server G

请注意,服务器 B 和 E 的子级是相同的。我最初的映射是这样的,这很好,直到我需要服务器 C 和 D 的对象是同一实例,因此 PARENT_ID 的单个列由最后一个关系填充,并且只有服务器 B 或 E 之一会显示子级:

<hibernate-mapping ...>
<class name="Server" ...>
...
<set name="children" cascade="all-delete-orphan" lazy="false">
<key column="PARENT_ID" />
<one-to-many class="Server" />
</set>
</class>
</hibernate-mapping>

我知道我需要做某种交叉引用表来映射服务器可以有多个父类的事实,但我在网上找到的所有示例都包含单独的父类和子类。

谁能告诉我如何为同一个类进行交叉引用父/子映射...? IE。像这样:

<hibernate-mapping ...>
<class name="Server" ...>
...
<set name="children" cascade="all-delete-orphan" lazy="false">
<key>
<column name="PARENT_ID" />
<column name="CHILD_ID" />
</key>
<many-to-many class="Server">
<column name="???" />
<formula>???</formula>
</many-to-many>
</set>
</class>
</hibernate-mapping>

谢谢

鲍勃。

最佳答案

在多对多映射中,将列名称设置为 CHILD_ID。

<many-to-many class="Server">
<column name="CHILD_ID" />
</many-to-many>

这将导致关系将子 ID 视为代表其自身的 ID。而一对多关系将使用parent_id作为代表自身的id。应该可以,我没有运行过,但我以前做过类似的事情。

关于java - Hibernate交叉引用同一类的多对多父/子映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1771408/

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