ユーザー入力から新しいエンティティを作成するとき、同じデータを持つ他のエンティティがないことを確認できません。使用済みの事前定義されたIDを見つけることができた唯一の例は、を呼び出すことでエンティティが存在するかどうかを確認できentityManager.find(id)
ます。IDが生成された場合、安全に保持するためのいくつかの方法があります。
- 電話
entityManager.persist
して最高のものを期待してください-をキャッチしてEntityExistsException
飲み込むか、エラーメッセージを表示します - 電話
entityManager.merge
してJPAにチェックを任せてください...それは常に正しく機能しますか? - クエリでエンティティを検索します-jPQLまたは基準、
entityManager.persist
見つからない場合は呼び出します
私の直感は3番目のアプローチを採用することですが、それでももっと良い方法はありますか?
私はJPA2を使用していますが、ベンダー固有のソリューション(HibernateのようなSessionManager.saveOrUpdate
)を避けたいと考えています。