gpt4 book ai didi

java - Hibernate(映射到交叉引用表)

转载 作者:行者123 更新时间:2023-12-02 15:49:57 25 4
gpt4 key购买 nike

我正在尝试执行以下操作(非常人为的示例):

我有两个表 A 和 B,它们形成多对多关系,我为其创建了映射表 A_B。然后我有一个表 C,它与映射表 A_B 形成一对多关系。

tableA
------
a_id [pk]

然后

tableB
------
b_id [pk]

然后

tableA_B
-------
a_id [pk]
b_id [pk]

然后

tableC
------
c_id [pk]

然后

tableC_AB
---------
c_id [pk]
a_id [pk]
b_id [pk]

所以在 Hibernate 中我为 A、B 和 C 创建了实体...

ClassA {
....
@JoinTable(
name="A_B",
joinColumns={@JoinColumn(name="a_id")},
inverseJoinColumns={@JoinColumn(name="b_id")}
)
@ManyToMany(cascade = {CascadeType.ALL})
private Set<B> bset = new HashSet<B>();
}

那么(反比关系)

ClassB {
@ManyToMany(mappedBy="bset")
private Set<A> subjects = new HashSet<A>();
}

这将创建第一个映射 A_B,但是我不确定如何在 hibernate 中创建映射 C_AB。我什至没有 A_B 的实体(仅存在于数据库中),那么我该如何处理呢?

感谢任何帮助。

干杯,

J爱

最佳答案

我建议应该使用独立的关联/连接/链接实体类,而不是隐式的多对多表。因为现实世界中不存在没有创建时间、创建者、协议(protocol)、雇佣契约(Contract)等附加字段的连接表。

所以我的意思是:

  • tableA_B应该映射到独立的实体,并且当两个事物链接在一起时必须有一些额外的字段。
  • tableC_AB 也应该映射到独立实体。
  • 当我们想要查找集合字段时,可以通过HQL按顺序查找并获取集合字段。
  • 多对多有问题,关联表不能有其他字段,但它应该有

关于java - Hibernate(映射到交叉引用表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341650/

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