gpt4 book ai didi

java - Hibernate自表多对一与连接表映射

转载 作者:行者123 更新时间:2023-12-02 08:27:50 25 4
gpt4 key购买 nike

我在试图弄清楚这个映射时脑抽筋。

这是我的数据库:

CUSTOMER              CUSTOMERFAMILY                CUSTOMER
PK SITE_ID -----------PRIMARYSITE_ID -- PK SITE_ID
MEMBERSITE_ID -------------|

这将创建一种关系,其中客户只能有一个父级(因为 CUSTOMERFAMILY.MEMBERSITE_ID 存在唯一约束),而客户可以有多个子级。 (即百事可乐公司拥有菲多利、佳得乐等,因此百事可乐将有多个 child ,但佳得乐只有一个 parent :百事可乐)。

我正在尝试在我的 Customer 对象中映射一个名为“parent”的属性,我已经尝试了这个想法的多种组合,但没有成功:

<join table="CUSTOMERFAMILY" inverse="false">
<key column="MEMBERSITE_ID" unique="true" />
<many-to-one name="parent" column="SITE_ID" not-null="true"><formula>PRIMARYSITE_ID</formula></many-to-one>
</join>

有什么想法吗?

提前致谢。

(请不要问为什么数据库是这样设计的...遗留系统,不是我!;))

最佳答案

假设你有

private Customer parent;
private Set<Customer> children;

映射看起来像这样:

<set name = "children" table = "CUSTOMERFAMILY">            
<key column="PRIMARYSITE_ID" />
<many-to-many column = "MEMBERSITE_ID" entity-name="package.Customer" />
</set>

<join table="CUSTOMERFAMILY" inverse="true">
<key column="MEMBERSITE_ID" />
<many-to-one name="parent" column = "PRIMARYSITE_ID" />
</join>

关于java - Hibernate自表多对一与连接表映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137648/

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