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

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

休眠一对一实体关联,并在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}


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

原文地址:https://54852.com/zaji/5125156.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存