강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của relate161781
relate161781

câu hỏi đã được viết

Trong thực tế! Truy vấn

countQuery 질문(질문수정)

Đã giải quyết

Viết

·

223

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());

오직 이 기능 때문인가요 ?

JPAjava

Câu trả lời 1

2

relate16님의 프로필 이미지
relate16
Người đặt câu hỏi

궁금증이 해결 됐습니다 . :]

long count = content.size();  하면 

해당 페이지의 count일 뿐 

총 몇 페이지까지 있는지 알기 위해서는 

totalCount가 필요하기 때문에 

countQuery가 있어야 되는 거였네요 :[

 

항상 감사합니다 :]

 

yh님의 프로필 이미지
yh
Người chia sẻ kiến thức

스스로 잘 해결하셨습니다^^

Hình ảnh hồ sơ của relate161781
relate161781

câu hỏi đã được viết

Đặt câu hỏi