JPA @JoinColumn注释与One To One的关系

@JoinColumn是否适用于JPA中One to One关系的两面? 我的印象是它应该总是在拥有一对一关系的一方使用,因为拥有方将有外键列,这个注释定义了外键列的属性。 请澄清我的理解是否正确。

编辑#1 – 我想知道,在哪种情况下,我们将在一对一关系的两边使用@JoinColumn注释?

OneToOne关系不一定是双向的。 当源和目标对象中的关系的另一个对象存在引用时,会发生双向OneToOne关系。

在双向OneToOne关系中,在关系的拥有方使用单个外键。 另一方面,目标实体必须使用mappedBy属性。

  • 例:

让我们考虑播放器网站对象之间的OneToOne关系。

每个玩家实体对应于一个网站实体:

@Entity public class Player { @Id @Column(name="PLAYER_ID") private long id; ... @OneToOne @JoinColumn(name="WEBSITE_ID") private Website website; ... } 

如果我们将mappedBy选项添加到Website实体,OneToOne单向关联将转换为双向关联:

 @Entity public class Website { @Id @Column(name = "WEBSITE_ID") private long id; ... @OneToOne(mappedBy="website") private Player websiteOwner; ... } 

您可以参考此链接和此链接以获取更多信息。