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

休眠一对一实体关联,并在3个类之间共享PK

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

休眠一对一实体关联,并在3个类之间共享PK

我不愿意告诉您这一点,但是您在那里存在双向关系。该人提及心脏和肝脏,并且每个人都提及该人。您在“心脏”和“肝脏”的Id属性上设置的注释专门表示它们通过委派给其Person属性来获得其Id属性的值。在显示的示例中,这些示例无效,您尚未在这些家伙上设置Person属性,因此,他们显然无法获取其Id值。

您可以将此关系设置为真正的单向OneToOne,这在Hibernate批注文档中进行了说明:

@Entitypublic class Body {    @Id    public Long getId() { return id; }    @oneToOne(cascade = CascadeType.ALL)    @PrimaryKeyJoinColumn    public Heart getHeart() {        return heart;    }    ...}@Entitypublic class Heart {    @Id    public Long getId() { ...}}

或者,您可以稍微更改我们的实体对象,以简化连接关系的两侧,例如:

@Entitypublic class Person {   public long personId;   private String name;   public Heart heart;   public Liver liver;   // other fields   @Id   @GeneratedValue   public long getPersonId() {return personId;}   @oneToOne(cascade = CascadeType.ALL)   @PrimaryKeyJoinColumn   public Heart getHeart() {return heart;}   public void setHeart(Heart heart){      this.heart = heart;      this.heart.setPerson(this);   }   @oneToOne(cascade = CascadeType.ALL)   @PrimaryKeyJoinColumn   public Liver getLiver() {return liver;}   public void setLiver(Liver liver){      this.liver = liver;      this.liver.setPerson(this);   }   // other getters and setters and constructors}


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

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

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