java – 由多个不同的父类引用的JPA子类
发布时间:2020-12-15 08:48:44 所属栏目:Java 来源:网络整理
导读:我遇到了以下ORM问题: 我有两个A级和B级,他们都有一组C级: class A { @Id @GeneratedValue private long id; @OneToMany private SetC cSet;}class B { @Id @GeneratedValue private long id; @OneToMany private SetC cSet;}class C { @Id @GeneratedValu
我遇到了以下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; } 我的一个想法是使用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) 如果使用JoinColumn批注对每个集进行批注,则替代方法: class A { @OneToMany @JoinColumn(name = "a_id") private Set<C> cSet; } class B { @OneToMany @JoinColumn(name = "b_id") private Set<C> cSet; } 因此,您将拥有以下表格: A : id B : id C : id,a_id,b_id 这当然在the documentation中描述. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |