ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Debug] jakarta.persistence.NonUniqueResultException: query did not return a unique result 해결 방법
    Toy Project/RoadMaker 2023. 7. 29. 22:46

    크래프톤 정글에서 팀 프로젝트인 RoadMaker를 개발 중 위와 같은 에러가 발생했다.

    위 에러는 JpaRepository의 조회 결과가 2개 이상 나왔지만, 리턴 타입이 List가 아닌 Optional<T>라서 발생한 문제다.

     

    public interface MemberRepository extends JpaRepository<Member, Long> {
    	public Optional<Member> findByNickname(String nickname);
    }

     

    프로젝트 정책상 중복된 닉네임을 갖는 회원이 생성되면 안되기에 위처럼 코드를 짰는데, 중복 검사를 하는 부분에 문제가 있어, 중복 닉네임을 갖는 계정이 2개 이상 생성되버린 것이었다. 따라서 문제되는 데이터를 제거하고, 중복 검사 로직을 디버깅하여 문제를 해결하였다.

     

    mongodb의 ODM인 mongoose를 사용할 때는 findOne 메서드 호출 시, 여러 도큐먼트가 있어도 첫번째로 발견한 도큐먼트를 반환해서 문제가 될 것이라 생각하지 못했는데, JPA에서는 문제가 되는 것이 조금은 신기했다.

    'Toy Project > RoadMaker' 카테고리의 다른 글

    나만의 무기 만들기: 기획  (0) 2023.07.10
Designed by Tistory.