[JPA] No entity found for query error

yunu·2022년 3월 5일
1
post-thumbnail

에러

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 {}
profile
rip

0개의 댓글