[JPA] Fetch join + Paging 에러

bagt13·2023년 2월 22일
3

JPA

목록 보기
11/13

Spring Data JPA를 사용하여 fetch join + paging을 시도하던 도중 다음과 같은 에러를 만났다.

❌ 에러 내용

상세 내용

Caused by: org.hibernate.QueryException: query specified join fetching,
but the owner of the fetched association was not present in the select list

📘 작성한 쿼리

현재 Comment와 Member 테이블 (N:1)이 존재하고, Comment List 조회 시 Member(작성자) fetch join + paging을 시도한 상황이다.


📘 원인

Hibernate에서 fetch join 사용 시, paging에 필요한 Count 쿼리를 자동으로 만들어주지 못한다고 한다.

따라서 다음과 같이 Count Query를 명시해주어야 한다. (@Query 애노테이션에서 편리하게 작성 가능하다)


✅ 성공

댓글 리스트 20개가 존재하고, 이 댓글 리스트 작성자(member)는 모두 5명이다. 따라서 (1 + 5) 총 6개의 쿼리가 나가야 한다.

하지만 fetch join이 정상적으로 수행되어 1(comment) + 1(count query) 총 2개의 쿼리로 요청을 처리했고, paging도 정상적으로 수행되었다.

profile
주니어 백엔드 개발자입니다😄

0개의 댓글