
我不愿意告诉您这一点,但是您在那里存在双向关系。该人提及心脏和肝脏,并且每个人都提及该人。您在“心脏”和“肝脏”的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}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)