栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Hibernate-复合主键包含外键

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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将从引用映射中为您填充外键,如果您正在使用排序,则这一点很重要。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516336.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号