본문 바로가기

TIL/트러블슈팅

[스프링부트]query did not return a unique result

이슈

👉 org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result: 2
jakarta.persistence.NonUniqueResultException: query did not return a unique result: 2

이것은 데이터베이스 쿼리가 예상대로 결과를 반환하지 않고, 유일한 결과가 아닌 둘 이상의 결과를 반환했음을 나타냅니다.

 

에러

👉 이 오류 메시지는 Spring Data JPA와 Hibernate를 사용하여 데이터베이스 쿼리를 실행하는 과정에서 발생한 예외 메시지입니다. 단일 결과가 예상되는 쿼리에서 둘 이상의 결과가 반환된 경우: 데이터베이스에서 특정 쿼리를 실행할 때 예상과 다르게 여러 개의 결과가 반환되는 경우가 있습니다. 이 경우 Spring Data JPA가 예외를 던지고 쿼리가 유일한 결과를 반환해야 한다는 것을 나타냅니다.

 

해결

👉이미 데이터가 들어간 DB를 update로 수정하여 @Column(unique = true)를 부여하면 반영되지 않습니다.

기존 데이터 정리: 데이터베이스에서 중복된 userId 값을 확인하고 제거하거나 수정하여 중복을 제거하거나 

 

jpa:
  hibernate:
    ddl-auto: update

yml파일에서 DB설정을 create로 바꾼 후 user_id를  @Column(unique = true) 설정하여 단일값을 조회하는 @PathVariable이 될 수 있도록 수정함.