존재하지 않는 경우 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
. 물론 두 가지 버전을 갖는getSingleResult()
것은 굉장하지만, 하나를 선택해야한다면 ...