我有@ManyToMany
类型与@JoinTable
关联的关系。
关键是关系中的实体有自己的表,但是有几个属性应该转到关联表。
我认为A_C
表很好。
添加@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
也不会有效。
ssedano。
答案 0 :(得分:0)
A_B
是表格A
和B
的加入表,但您也将其用作B
的辅助表格。
这不起作用。如果将B.a1
分配给多个B.a2
,则B
和A
应具有哪些值?
有三种可能性:
* a1和a2属于该关联。在这种情况下,您需要一个关联类,它存储该附加信息。
* a1和a2仅属于B:a1和a2不应在表A_B
中
* A
是B
的组合:应合并表A_B
和B
,并将多对多关系替换为一对多关系。< / p>
如果没有属性的特定名称,很难说它们实际属于。