The OneToOne relationship is not necessarily bi-directional.
A bi-directional OneToOne relationship happens when a reference exists to the other object of the relationship in both the source and the target objects.
In a bi-directional OneToOne relationship, a single foreign key is used in the owning side of the relationship. On the other hand, the target entity must use the mappedBy attribute.
Let's consider a OneToOne relationship between a Player and a Website objects.
Each player entity corresponds to exactly one website entity:
@Entity
public class Player {
@Id
@Column(name="PLAYER_ID")
private long id;
...
@OneToOne
@JoinColumn(name="WEBSITE_ID")
private Website website;
...
}
If we add the mappedBy option to the Website entity, the OneToOne unidirectional association will be transfornmed into a bidirectional one:
@Entity
public class Website {
@Id
@Column(name = "WEBSITE_ID")
private long id;
...
@OneToOne(mappedBy="website")
private Player websiteOwner;
...
}
You can consult this link and this one for more information.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…