인프런 커뮤니티 질문&답변

백엔드공부화이팅님의 프로필 이미지
백엔드공부화이팅

작성한 질문수

실전! Querydsl

Querydsl 지원 클래스 직접 만들기

동적 쿼리

작성

·

287

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()]);
}

감사합니다.

백엔드공부화이팅님의 프로필 이미지
백엔드공부화이팅

작성한 질문수

질문하기