gpt4 book ai didi

java - Hibernate - 两个类之间的多个多对多关联

转载 作者:行者123 更新时间:2023-11-30 08:03:31 24 4
gpt4 key购买 nike

我有两个实体,称它们为 AB。这些实体之间可能处于三种不同的多对多关系中的一种。

我如何在 Hibernate 中对其进行建模?这个想法是 A 类将有字段:

Set<B> relationX;
Set<B> relationY;
Set<B> relationZ;

同样,B 类也有字段:

Set<A> relationX;
Set<A> relationY;
Set<A> relationZ;

这两个类都有所有三个字段,因为我希望关联是双向的。

拥有像这样的“标准”Hibernate 多对多注解...

@JoinTable(name = "A_relX_B",
joinColumns = {@JoinColumn(name = "A_ID")},
inverseJoinColumns = {@JoinColumn(name = "B_ID")}
)

... 行不通,因为无法区分这三个独立的关系。我将如何实现这一目标?还是我需要手动分解 m-to-n 关系?

最佳答案

你已经在正确的道路上:

public class A {
@ManyToMany
@JoinTable(name = "A_relX_B",
joinColumns = {@JoinColumn(name = "A_ID")},
inverseJoinColumns = {@JoinColumn(name = "B_ID")}
)
Set<B> relationX;

@ManyToMany
@JoinTable(name = "A_relY_B",
joinColumns = {@JoinColumn(name = "A_ID")},
inverseJoinColumns = {@JoinColumn(name = "B_ID")}
)
Set<B> relationY;

@ManyToMany
@JoinTable(name = "A_relZ_B",
joinColumns = {@JoinColumn(name = "A_ID")},
inverseJoinColumns = {@JoinColumn(name = "B_ID")}
)
Set<B> relationZ;
}

基本上,这些是独立的关联,您可以有一个(最常见的情况)或一百个,只要每个都映射到一个单独的关系表即可。

同样是在 B 方面(不要忘记 mappedBy 在每个关联上选择反面)。

关于java - Hibernate - 两个类之间的多个多对多关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36224501/

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