これは、次の質問に似ています。
しかし、この種のロジックを自動的に強制する方法があるかどうか疑問に思っています。「1つの」テーブルに外部キーを持つ「多くの」テーブルに新しいレコードを永続化するとき、休止状態で参照されたエンティティを自動的にロードし、それが存在することを確認し、そのエンティティのフィールドにアクセスします(検証目的で) )。
注釈だけでこれを行う方法はありますか?
これは、次の質問に似ています。
しかし、この種のロジックを自動的に強制する方法があるかどうか疑問に思っています。「1つの」テーブルに外部キーを持つ「多くの」テーブルに新しいレコードを永続化するとき、休止状態で参照されたエンティティを自動的にロードし、それが存在することを確認し、そのエンティティのフィールドにアクセスします(検証目的で) )。
注釈だけでこれを行う方法はありますか?
これは、Manyを永続化するときにデフォルトで行うことです。
One one = (One) session.get(One.class, oneId); // get the one entity from the database
Many many = new Many();
many.setOne(one);
session.save(many);
DBから実際にロードせずに、1つへの参照が必要な場合は、のsession.load()
代わりにを使用してsession.get()
ください。
何をするにしても、データベースのみがデータの一貫性を保証できます(データをロードして多数にアタッチした後、別のトランザクションがデータを削除する可能性があるため)。したがって、データベースに外部キー制約が必要です。