• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Spring Sort를 QueryDSL 변환 적용하는 방법 문의

21.02.15 00:10 작성 조회수 2.5k

0

안녕하세요. 강사님

QueryDSL 재미있게 배웠습니다.

정렬기준을 아래와 같이 받았을 때 pageable 파라미터를 

이용해서 QueryDSL에 적용하는 방법에 대해서 고민입니다.

정렬기준 입력 형태: URI?sort=field1,asc&sort=field2,desc

org.springframework.data.domain.Sort

방법1. pageable 값을 얻어와 직접 queryDSL에 OrderSpecifier로 지정

if (pageable != null) {

    query.offset(pageable.getOffset());

    query.limit(pageable.getPageSize());

    for (Sort.Order o : pageable.getSort()) {

        PathBuilder<Object> orderByExpression = new PathBuilder<Object>(Object.class, "object");

        query.orderBy(new OrderSpecifier(o.isAscending() ? com.mysema.query.types.Order.ASC

                : com.mysema.query.types.Order.DESC, orderByExpression.get(o.getProperty())));

    }

}

방법2. applyPagination() 함수로 매핑

getQuerydsl().applyPagination(pageable, jPQLQuery);

결과적으로 방법2가 더 깔끔해 보이는데

원본 엔티티와 DTO객체가 달라서 org.hibernate.hql.internal.ast.QuerySyntaxException이 발생하는 이슈가 있습니다.

현재까지 결론은 방법1을 사용해야할 것으로 보이는데 더 좋은 방법을 아시는지 문의드립니다.

감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요. 배워야산다님

1번을 사용해야 할 듯 합니다.

혹시 더 좋은 방법을 아시는 분은 답변 부탁드립니다.

감사합니다.