I have two examples that first is @OneToOne unidirectional mapping and second bidirectional. In unidirectional mapping, the owning-side table must contain a join column that
Because you didn't understand how a bidirectional OneToOne is mapped. You don't need two foreign keys. A single one is sufficient to perform a join between both tables, in both directions:
select a.* from address a inner join customer c on c.addressId = a.id;
select c.* from customer c inner join address a on c.addressId = a.id;
The fact that the association is unidirectional or bidirectional doesn't change how the tables are linked together. It just changes the mapping, and allows navigating through the association in both directions.
In a bidirectional association, you always have an owning side (which tells how the association is mapped, using which join column), and an inverse side, where you just say: I'm the other side of the association that is mapped by this field (the field in the mappedBy
attribute value) in the target entity.