해결된 질문
작성
·
176
1
countQuery는 count할 때, 쿼리 최적화를 위해서 하는 걸로 알고 있는데
public Page<MemberTeamDto> searchPageComplex(MemberSearchCondition condition, Pageable pageable) {
List<MemberTeamDto> content = queryFactory
.select(new QMemberTeamDto(member.id.as("memberId"), member.username.as("memberName"), member.age, team.id.as("teamId"), team.name.as("teamName"))) .from(member) .leftJoin(member.team, team)
.where(member.username.eq(condition.getUsername()), team.name.eq(condition.getTeamName()), member.age.goe(condition.getAgeGoe()), member.age.loe(condition.getAgeLoe()))
.offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch();
JPAQuery<Member> countQuery = queryFactory .selectFrom(member) .leftJoin(member.team, team) .where(member.username.eq(condition.getUsername()), team.name.eq(condition.getTeamName()), member.age.goe(condition.getAgeGoe()), member.age.loe(condition.getAgeLoe()));
return PageableExecutionUtils.getPage(content, pageable, () -> countQuery.fetchCount()); }
어차피 실행될
List<MemberDto> content = queryFactory.select(..생략..
에다가
long count = content.size(); 하면
count가 나오지만
위처럼 굳이 countQuery를 짜서 쓰는 건
PageableExecutionUtils.getPage(content, pageable, () -> countQuery.fetchCount());
오직 이 기능 때문인가요 ?
답변 1
2
궁금증이 해결 됐습니다 . :]
long count = content.size(); 하면
해당 페이지의 count일 뿐
총 몇 페이지까지 있는지 알기 위해서는
totalCount가 필요하기 때문에
countQuery가 있어야 되는 거였네요 :[
항상 감사합니다 :]
스스로 잘 해결하셨습니다^^