There are several ways to implement a one-to-one association in a database: you can share a primary key but you can also use a foreign key relationship with a unique constraint (one table has a foreign key column that references the primary key of the associated table).
In the later case, the hibernate way to map this is to use a many-to-one
association (that allows to specify the foreign key).
The reason is simple: You don’t care
what’s on the target side of the
association, so you can treat it like
a to-one association without the many
part. All you want is to express “This
entity has a property that is a
reference to an instance of another
entity” and use a foreign key field to
represent that relationship.
In other words, using a many-to-one
is the way to map one-to-one foreign key associations (which are actually maybe more frequent than shared primary key one-to-one associations).