1

ユーザー入力から新しいエンティティを作成するとき、同じデータを持つ他のエンティティがないことを確認できません。使用済みの事前定義されたIDを見つけることができた唯一の例は、を呼び出すことでエンティティが存在するかどうかを確認できentityManager.find(id)ます。IDが生成された場合、安全に保持するためのいくつかの方法があります。

  • 電話entityManager.persistして最高のものを期待してください-をキャッチしてEntityExistsException飲み込むか、エラーメッセージを表示します
  • 電話entityManager.mergeしてJPAにチェックを任せてください...それは常に正しく機能しますか?
  • クエリでエンティティを検索します-jPQLまたは基準、entityManager.persist見つからない場合は呼び出します

私の直感は3番目のアプローチを採用することですが、それでももっと良い方法はありますか?

私はJPA2を使用していますが、ベンダー固有のソリューション(HibernateのようなSessionManager.saveOrUpdate)を避けたいと考えています。

4

1 に答える 1

1

新しく生成されたIDが一意であるかどうかを本当に予測できない場合は、3番目のアプローチを使用します。

また、このような単純なクエリにはCriteriaは必要ないと思います。ほとんどの場合、その追加のクエリのコストはそれほど高くありません。

于 2012-07-30T08:54:26.447 に答える