存在しない場合にinsertOrUpdate
挿入するメソッドがありEntity
ます。存在する場合は更新します。これを有効にするにはfindByIdAndForeignKey
、それがnull
挿入を返した場合は更新しないでください。問題は、それが存在するかどうかをどのように確認するかです。だから私は試してみましたgetSingleResult
。しかし、それは例外をスローします
public Profile findByUserNameAndPropertyName(String userName, String propertyName) {
String namedQuery = Profile.class.getSimpleName() + ".findByUserNameAndPropertyName";
Query query = entityManager.createNamedQuery(namedQuery);
query.setParameter("name", userName);
query.setParameter("propName", propertyName);
Object result = query.getSingleResult();
if (result == null) return null;
return (Profile) result;
}
がgetSingleResult
スローされますException
。
ありがとう
getSingleResult()
。「このレコードが存在することは完全に確信しています。存在しない場合は、私を撮影してください。」null
このメソッドを使用するたびにテストする必要はありません。返されないことが確実だからです。それ以外の場合は、多くの定型文や防御的なプログラミングが発生します。そして、レコードが実際に存在しない場合(私たちが想定したものとは逆に)、後の数行NoResultException
と比較したほうがはるかに優れていNullPointerException
ます。もちろん、の2つのバージョンを持つgetSingleResult()
ことは素晴らしいことですが、1つを