gpt4 book ai didi

Hibernate manytomany @JoinTable + @SecondaryTable 重复条目

转载 作者:行者123 更新时间:2023-12-01 06:40:38 24 4
gpt4 key购买 nike

我有一个 @ManyToMany 类型的关系与 @JoinTable协会。

问题是关系中的实体有自己的表,但有几个属性应该放在关联表中。
A_C我觉得 table 很好。

添加 @SecondaryTable复制。

@Entity
@Table(name = "A")
@SecondaryTable(name = "A_C", pkJoinColumns = {
@PrimaryKeyJoinColumn(columnDefinition = "A_ID", name = "A_ID")})
class A {
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "A_B", joinColumns = {@JoinColumn(name = "A_ID")}, inverseJoinColumns = {@JoinColumn(name = "B_ID")})
private List<B> bs = new ArrayList<B>();

@Column(table = "A_B")
private int b1;
}

@Entity
@Table(name = "B")
@SecondaryTable(name = "A_B", pkJoinColumns = {
@PrimaryKeyJoinColumn(columnDefinition = "B_ID", name = "B_ID")})
class B {
@Column(table = "A_B")
private int a1;

@Column(table = "A_B")
private int a2;

@ManyToMany(mappedBy = "A_ID", fetch = FetchType.LAZY)
private List<A> as = new ArrayList<A>();

}

保存时的这个 A实体 B以以下方式复制:
A_ID    B_ID   a1     a2
1 0 1 1
1 1 0 0

应该在哪里
A_ID    B_ID   a1    a2
1 1 1 1

@Embeddable也行不通。

塞达诺。

最佳答案

A_B是表 A 的连接表和 B但您也将其用作 B 的辅助表.

这不起作用。什么值应该B.a1B.a2如果有 B分配给多个 A ?

有以下三种可能:
* a1 和a2 属于关联。在这种情况下,您需要一个关联类来存储附加信息。
* a1 和a2 只属于B:a1 和a2 不应在表A_B
* AB 的组合: 表A_BB应该合并,并将多对多关系替换为一对多关系。

如果没有属性的特定名称,很难判断它们是否真正属于。

关于Hibernate manytomany @JoinTable + @SecondaryTable 重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10801181/

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