Hibernate-复合主键包含外键

Hibernate-复合主键包含外键,第1张

Hibernate-复合主键包含外键

假设f1和F2唯一标识A并存在于APK中,则可以通过几种方式使用JPA 2.0的派生ID。最容易显示的是:

@Entity@IdClass(BPK.class)public class B {  @ID  String f5;  @ID  String f6;  @ID  @ManyToOne(fetch=FetchType.EAGER)  @JoinColumns({    @JoinColumn(name="f1", referencedColumnName="f1", nullable=false),    @JoinColumn(name="f2", referencedColumnName="f2", nullable=false)  })  A a;}public class BPK {  String f5;  String f6;  APK a;}

这里的关键点是B对A的引用控制了外键字段f1和f2,并且A的主键在B的主键中使用-
与关系名称相同。映射它的另一种方法是将B的PK设置为一个嵌入式ID,但是嵌入式ID仍然不能具有引用映射,因此它可能看起来像:

@Entity@IdClass(BPK.class)public class B {  @EmbeddedId  BPK pk;  @MapsId("apk")  @ManyToOne(fetch=FetchType.EAGER)  @JoinColumns({    @JoinColumn(name="f1", referencedColumnName="f1", nullable=false),    @JoinColumn(name="f2", referencedColumnName="f2", nullable=false)  })  A a;}@Embeddablepublic class BPK {  String f5;  String f6;  APK apk;}

请注意mapsId-
这告诉JPA嵌入式’apk’引用中的列使用从A提取的引用映射中的外键字段。JPA将从引用映射中为您填充外键,如果您正在使用排序,则这一点很重要。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5507479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存