• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

동적 쿼리 생성시 질문이 있습니다. (+패치조인)

23.05.10 19:20 작성 조회수 425

0

안녕하세요 항상 강의 잘보고 있습니다.

현재 강의에서 알려주신것을 토대로 토이프로젝트를 진행하고 있습니다. 토이프로젝트를 진행하던중 동적 쿼리 관련하여 이슈가 생겼고 해당 이슈를 해결하기위해 궁리를 하던 중 궁금한 점이 생겨 질문드립니다.

현재 강의에서는 조건절에 BooleanExpression을 이용해서 동적으로 쿼리를 생성하고 있는데 혹시 join절에도 동적 쿼리를 적용할수 있는지 궁금합니다. 만약 적용이 가능하다면 어떤식으로 가능한지 궁금합니다.

추가로 패치조인에 대해서 질문이 있습니다. ToOne관계에 있어서는 기존 전략을 지연로딩으로 가져가되 연관관계가 걸려있는 객체에 대해서 선택적으로 fetch join을 사용하라고 이해했습니다. 여기서 질문은 Querydsl에서 @QueryProhection을 사용하여 DTO로 조회를 할때는 fetch join을 사용할수는 없는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. 이상민님

join절의 경우 다음과 같이 적용해야 합니다.

query.from(qUser);

if (조건1) {
    query.leftJoin(qUser.orders, qOrder).on(qOrder.amount.gt(100));
}

List<User> users = query.fetch();

 

패치 조인의 경우 패치 조인이라는 기능 자체가 엔티티를 직접 조회할 때 연관된 엔티티도 함께 조회하는 기능입니다. 따라서 이 기능은 엔티티를 조회할 때만 가능합니다. DTO를 조회할 때는 fetch join 대신에 일반적인 sql에서 사용하는 join을 사용하시면 됩니다.

감사합니다.