HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
✍🏻
Learnary (learn - diary)
/
[JPA] - QueryDsl Sort를 이용한 동적 정렬 쿼리

[JPA] - QueryDsl Sort를 이용한 동적 정렬 쿼리

progress
Done
Tags
Spring
How REFER

How


우선 정렬을 동적으로 처리하기 위해서는 OrderSpecifier라는 객체가 필요하다.
notion image
내부로 들어 OrderSpecifier 객체를 보면 Order 객체 target 객체를 필수적으로 요하고 선택적으로 NullHandling에 관한 객체가 필요하다.
notion image
여기에서의 target은 querydsl의 Qclass에 관한 정보를 넘겨주면 된다.
  • Qclass 경로 정보, Qclass의 필드이름
querydsl을 사용하면 Q Class들로 부터 쿼리를 생성하기 때문이다.
 
Utils 클래스를 만들어 dsl 사용하는 어디에서든 컬럼을 추출 할 수 있도록 구성한다.
import com.querydsl.core.types.Order; import com.querydsl.core.types.OrderSpecifier; import com.querydsl.core.types.Path; import com.querydsl.core.types.dsl.Expressions; public class QueryDslUtil { public static OrderSpecifier<?> getSortedColumn(Order order, Path<?> parent, String fieldName) { Path<Object> fieldPath = Expressions.path(Object.class, parent, fieldName); return new OrderSpecifier(order, fieldPath); } }
 
pageable안에 구성해놓은 정렬 순서를 orderSpecifier로 변환한다.
List<OrderSpecifier> getAllOrderSpecifiers(Pageable pageable) { List<OrderSpecifier> orders = new ArrayList<>(); if (!isEmpty(pageable.getSort())) { for (Sort.Order order : pageable.getSort()) { Order direction = order.getDirection().isAscending() ? Order.ASC : Order.DESC; switch (order.getProperty()) { case "id": OrderSpecifier<?> orderId = QueryDslUtil.getSortedColumn(direction, ${QclassName}, ${filedName}); orders.add(orderId); break; default: break; } } } return orders; }

 REFER


[JPA] QueryDsl에서 Pageable 객체를 이용한 Sort 방법
우선 Order, Path, fieldName을 전달하면 OrderSpecifier 객체를 리턴하는 Util 클래스를 작성해서 Sort시 마다 사용할 수 있도록 한다. Path 파라미터는 compileQuerydsl 빌드를 통해서 생성된 Q타입 클래스의 객체이다. Sort의 대상이 되는 Q타입 클래스 객체를 전달한다. import com.querydsl.core.types.Order; import com.querydsl.core.types.OrderSpecifier; import com.querydsl.core.types.Path; import com.querydsl.core.types.dsl.Expressions; public class QueryDslUtil { public static OrderSp..
[JPA] QueryDsl에서 Pageable 객체를 이용한 Sort 방법
https://uchupura.tistory.com/7
[JPA] QueryDsl에서 Pageable 객체를 이용한 Sort 방법
Querydsl - 빠른 시작, 간단 정리
Java, JPA, Spring을 주로 다루고 공유합니다.
Querydsl - 빠른 시작, 간단 정리
https://backtony.github.io/jpa/2021-05-09-jpa-querydsl-5/
Querydsl - 빠른 시작, 간단 정리