org.springframework.dao.EmptyResultDataAccessException: No entity found for query; nested exception is javax.persistence.NoResultException: No entity found for query
Service class를 구현하면서 회원이 중복되지 않게 하기 위해 새로운 회원의 아이디(username)가 DB에 존재하는지 확인하는데 위와 같은 에러가 발생하였다.
public Optional<Member> findByUsername(String username) {
Member member = em.createQuery("select m from Member m where m.username = :username", Member.class)
.setParameter("username", username)
.getSingleResult();
return Optional.ofNullable(member);
}
구글링을 하며 찾아본 결과 getSingleResult()
는 값이 있는 경우는 잘 동작하지만 값이 없을 경우 예외를 던져 처음 사용되는 아이디는 DB에 없어 예외가 발생하였다.
try-catch
try {
Object result = ~~~.getSingleResult();
} catch (Exception e) {
~~~
}
getResultList()
List<Object> result = ~~~.getResultList();
result.stream().findAny();
// result.stream().findFirst();
// if (result.isEmpty()) {} else {}