OrderSpecifier

dongdong·2022년 7월 11일
0

Querydsl

목록 보기
1/2

만난 문제

Toy 프로젝트에서 Querydsl을 사용하여 Item 엔티티를 price별 내림차순을 구현하고싶어서 .orderBy()를 사용했는데 인자로 Sort를 받지않고 OrderSpecifier를 받는다.

OrderSpecifier.class

3가지 필드가 있다.
Order, target, nullHandling

Order 와 NullHanding은 Enum타입이였고, target은 Expression<T>타입 이였다.

해결

OrderSpecifier를 생성해서 리스트에담아 반환해주는 getOrderSpecifier 메서드를 만들었다.
인자로 Sort를 받는 이유는 pageable.getSort()로 정렬조건을 받아올수 있기때문이다.

변수 direction는 인자로 받은 sort에서 정렬조건을 찾아 넣어주고
orderByExpression의 타입인 PathBuilder는 동적으로 경로를 생성해준다.

orderBy()부분을 아래와 같이 변경하고, 테스트 코드 작성!

테스트 실행 결과

price 내림차순으로 잘 정렬 된것을 확인 할 수 있다.

profile
공부하고 기록하기~

0개의 댓글