我遇到了以下ORM问题:
我有两个A级和B级,他们都有一组C级:
class A {
@Id
@GeneratedValue
private long id;
@OneToMany
private Set<C> cSet;
}
class B {
@Id
@GeneratedValue
private long id;
@OneToMany
private Set<C> cSet;
}
class C {
@Id
@GeneratedValue
private long id;
}
Run Code Online (Sandbox Code Playgroud)
我的一个想法是使用MappedSuperclass for C并且有两个扩展类,每个都在A或B中引用.但从面向对象的角度来看,这不是最好的方法,尽管我可以使用超类类型来工作跟他们.
有没有更好的方法来实现这个模型?
谢谢,本杰明
如果未指定任何映射注释(即JoinColumn或JoinTable),则它将为每个关联使用连接表.
因此,您将拥有以下表格:
A : id
B : id
C : id
A_C : a_id, c_id (where c_id is unique)
B_C : a_id, c_id (where c_id is unique)
Run Code Online (Sandbox Code Playgroud)
如果使用JoinColumn批注对每个集进行批注,则替代方法:
class A {
@OneToMany
@JoinColumn(name = "a_id")
private Set<C> cSet;
}
class B {
@OneToMany
@JoinColumn(name = "b_id")
private Set<C> cSet;
}
Run Code Online (Sandbox Code Playgroud)
因此,您将拥有以下表格:
A : id
B : id
C : id, a_id, b_id
Run Code Online (Sandbox Code Playgroud)
这当然在文档中描述.
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |