ユーザー オブジェクトと設定オブジェクトの間の関係に取り組んでいます。各ユーザーには、1 つの設定オブジェクトが関連付けられている必要があります。つまり、ユーザーとプリファレンスの間の 1 対 1 の関係です。また、 User が null Preference を持つことはできないことを強制したいと思います。
私のクラスの構造。
public class User{
...
@OneToOne(mappedBy="user")
public Preference preference;
...
}
public class Preference{
...
@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name="userid")
public User user;
...
}
JPA がテーブルを生成するとき、外部キー列は Preference テーブルにあります。Web を読んでいると、これは User テーブルに外部キーを持つよりも優先されます。
注: これを双方向の関係にしました。
これにより適切なテーブルが生成されましたが、ユーザーが常にnullでない設定を持つ必要があることをdbレイヤーで強制したいと思います。アプリケーション層でこれを行うことができることはわかっていますが、(可能であれば) db 層です! ユーザーを所有側にし、プリファレンスを逆側にせずにこれを達成できる方法はありますか?