存在しない場合に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つを