작성
·
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를 변환해서 가져온다음에 다시 적용하는것은 비효율적인 것 같아 다른 좋은 방법을 적용하고 싶은데,
잘떠오르지 않아 질문드립니다.
더 좋은 방법을 적용할수 있는 힌트를 얻을 수 있을까요?
답변주시면 감사드리겠습니다.