인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

유승현님의 프로필 이미지
유승현

작성한 질문수

실전! Querydsl

스프링 데이터 페이징 활용1 - Querydsl 페이징 연동

디폴트 정렬 조건 추가하고자 하는 경우

작성

·

199

0

페이징 쿼리를 요청 받았을 때,
디폴트로 제일 마지막에 날짜(끌올 기능도 넣고 싶어 orderAt이란 LocalDate 프로퍼티 추가)를 기준으로 디폴트를 넣고자 합니다

 

public Page<Post> getPagePostBySearch(
List<District> districts, PostSearchCondition condition, Pageable pageable){
return applyPagination(pageableWithOrderAt(pageable),
query -> query
.selectFrom(post)
.join(post.category, category).fetchJoin()
.join(post.seller, account).fetchJoin()
.join(post.district, district).fetchJoin()
.where(
defaultCond(districts),
searchCond(condition)
));
}

 

private PageRequest pageableWithOrderAt(Pageable pageable) {
List<Sort.Order> orders = pageable.getSort().get().collect(Collectors.toList());
orders.add(new Sort.Order(Sort.Direction.DESC, "orderAt"));
return PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(orders));
}

 

이때 이렇게 입력 받은 pagable로 부터 PageRequest를 새로 만들어 적용해 주었는데,

pagable로 부터 모든 sort를 변환해서 가져온다음에 다시 적용하는것은 비효율적인 것 같아 다른 좋은 방법을 적용하고 싶은데,

잘떠오르지 않아 질문드립니다.

 

더 좋은 방법을 적용할수 있는 힌트를 얻을 수 있을까요?

답변주시면 감사드리겠습니다.

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 유승현님

저도 다른 방법이 떠오르지 않네요.

혹시 더 나은 방법을 아시는 분 있으면 답변 부탁드립니다.

감사합니다.

유승현님의 프로필 이미지
유승현

작성한 질문수

질문하기