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

带有部分组合主键的休眠外键

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

带有部分组合主键的休眠外键

我找到了解决此问题的两种方法。

第一个是一种解决方法,没有第二个那么整洁。

B
实体的主键定义为包含
col_a
col_b
和的复合键,
col_c
首先将假定为主键的内容定义为唯一约束。缺点是,从
col_c
概念上讲,该列实际上并不是主键的一部分。

@Entityclass A {  @Id  private int b;  @Id  private int c;}@Entity@Table(uniqueConstraints = {@UniqueConstraint(columnNames = { "a", "b" }) })class B {  @Id  private int a;  @Id  @ManyToOne(optional = false)  @JoinColumns(value = {          @JoinColumn(name = "b", referencedColumnName = "b"),          @JoinColumn(name = "c", referencedColumnName = "c") })  private A entityA;}

第二个使用

@EmbeddedId
@MapsId
注释,并且恰好做了我一开始想要做的事情。

@Entityclass A {  @Id  private int b;  @Id  private int c;}@Embeddableclass BKey {  private int a;  private int b;}@Entityclass B {  @EmbeddedId  private BKey primaryKey;  @MapsId("b")  @ManyToOne(optional = false)  @JoinColumns(value = {          @JoinColumn(name = "b", referencedColumnName = "b"),          @JoinColumn(name = "c", referencedColumnName = "c") })  private A entityA;}


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

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

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