티스토리 뷰
기타
org.hibernate.NonUniqueResultException: Query did not return a unique result
GiHoo 2024. 4. 28. 14:41산학 협력 캡스톤 프로젝트를 진행하던 중 다음과 같은 오류가 발생했습니다.
org.hibernate.NonUniqueResultException: Query did not return a unique result: 3 results were returned
쿼리를 통해 find 하는 메서드에서 발생한 오류인데 처음 보는 종류의 오류라 확인해보았습니다.
해당 오류를 발생시키는 메서드는 아래의 메서드입니다.
해당 프로젝트는 SolveHistory와 SolveHistoryDetail 엔티티가 존재하는데, 1:N 관계를 가지고 있습니다.
메서드는 SolveHistoryDetailRepository에 포함되는 메서드인데, 해당 메서드를 통해 받을 수 있는 클래스가 하나이기 때문에 발생하는 오류라고 합니다.
해당 문제를 인지하고 해결한 방법은 다음과 같습니다.
반환하려고 하는 값은 Optional<SolveHistory> 이지만, 해당 메서드를 SolveHistoryDetailRepository 에서 처리하고 있기 때문에
다수의 SolveHistoryDetail 값을 하나의 클래스로만 받게 되어 발생한 오류라고 생각했습니다.
그렇기 때문에 해당 메서드를 SolveHistoryRepository로 이관하여 처리하도록 하였습니다.
이관하고 난 후 정상적으로 쿼리가 날아가는 것을 확인할 수 있었습니다~
' 엔티티 구조와 관계를 잘 생각하고 쿼리나 로직을 작성합시다.. '