해결된 질문
작성
·
302
2
강의에서는 Query DSL 4.x 버전이어서 제네릭 없는 예제 코드인 것 같은데, 제가 올리는 버전은 5.0 버전이어서 차이가 있음을 감안해주세요.
정렬 조건을 하나만 추가하는 코드입니다. 정렬 조건을 여러 개 추가하려면 반복문을 돌면서 JPAQuery 를 동적으로 확장해나가면 됩니다.
// 페이징하는 메소드에서 사용
private Expression<? extends Comparable<?>> specifyMemberProperty(String prop) {
prop = prop == null ? "" : prop.toLowerCase();
if (prop.equals("username")) {
return member.username;
}
if (prop.equals("age")) {
return member.age;
}
return member.id;
}
// 페이징하는 메소드
// ...
.orderBy(new OrderSpecifier<>("desc".equalsIgnoreCase(dir) ? Order.DESC : Order.ASC, specifyMemberProperty(prop)))
.fetch();
--
저는 일단 이렇게 만들어봤는데, 다른 분께서 더 나은 코드, 더 빠른 코드가 있다면 저한테도 알려주세요.
감사합니다.
답변