해결된 질문
작성
·
410
0
팀과 멤버 (1:N)
팀 A의 멤버1, 멤버2, 멤버3, 멤버4, 멤버5가 있습니다.
팀A를 멤버와 함께 fetchjoin해서 가져오게 되면 팀A 객체 5개가 반환됩니다.
그런데 querydsl에서 아래와 같이 distinct()를 사용하지 않고 offset()만 사용하였는데
queryFactory
.selectFrom(team)
.join(team.members, member).fetchJoin()
.offset(pageable.getOffset())
.fetch();
distinct 한 것처럼 중복이 제거되었습니다. 무슨 이유일까요?
답변 1
0
안녕하세요. BADAL KIM님, 공식 서포터즈 y2gcoder입니다.
제가 봤을 때는 컬렉션 페치 조인에서 paging을 같이 사용했을 때, 어플리케이션 메모리 단에서 페이징 처리를 해줘서 그러한 결과가 나타나는 것으로 보입니다. 해당 부분은 실제로 페이징 처리가 된 것이 아니며 성능에 문제가 생길 수 있습니다.
해당 부분에 대해 자세하게 설명해놓은 링크가 있어 올려놓겠습니다!
https://tecoble.techcourse.co.kr/post/2020-10-21-jpa-fetch-join-paging/
감사합니다.