• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

동적 쿼리

23.09.20 10:43 작성 조회수 189

0

Where 절에서 동적 쿼리를 작성할 수 있듯이, orderBy 절에서도 동적쿼리를 작성해도 괜찮나요 ?
근데 orderBy 절은 null이 되면 안될 것 같은데 이런 경우에 동적으로 어떻게 해야하는지 궁금합니다.

또 실무에서는 where절과 order절 모두 동적 쿼리를 자주 사용하는지 궁금합니다

답변 1

답변을 작성해보세요.

0

안녕하세요. 백엔드공부화이팅님

실무에서도 양쪽 모두 동적쿼리를 자주 사용합니다. (물론 본인이 어떤 요구사항에 맞추어 개발하는지에 따라 달라지겠지요? 동적 쿼리의 경우 상황에 따라 다르겠지만 보통은 order 보다는 where를 더 자주 사용합니다.)

orderBy에는 배열을 받도록 되어 있습니다. 값이 없는 경우 빈 배열을 넣어주시면 됩니다.

다음 코드를 참고해주세요.

@Test
void createdByTest() {
    JPAQueryFactory query = new JPAQueryFactory(em);

    List<Product> result = query
            .select(product)
            .from(product)
            .orderBy(orders())
            .fetch();
}

private static OrderSpecifier[] orders() {
    List<OrderSpecifier> specs = new ArrayList<>();
    //필요한 orderSpecs에 필요한 조건을 추가한다.
    specs.add(product.createdBy.desc());
    //배열로 반환한다.
    return specs.toArray(new OrderSpecifier[specs.size()]);
}

감사합니다.