QueryDSL

QueryDsl 조인 종류

쿠카이든 2022. 6. 17. 17:59
728x90
  • 조인(Join)은 innerJoin(join), leftJoin, rightJoin, fullJoin을 사용할 수 있다.
    • 추가로 JPQL의 on과 성능 최적화를 위한 fetch 조인도 사용할 수 있다.
  • 조인의 기본 문법은 첫 번째 파라미터에 조인 대상을 지정하고, 두 번째 파라미터에 별칭으로 사용할 쿼리타입을 지정한다.
    • join(조인대상, 별칭으로 사용할 쿼리 타입)
QOrder order = QOrder.order;
QMember member = Qmember.member;
QOrderItem orderItem = QOrderItem.orderItem;

query.from(order)
    .join(order.member, member)
    .leftJoin(order.orderItems, orderItem)
    .list(order);

아래는 조인에 on을 사용했다.

query.from(order)
    .leftJoin(order.orderItems, orderItem)
    .on(orderItem.count.gt(2))
    .list(order);

 

아래는 페치 조인을 사용하는 방법이다.

query.from(order)
    .innerJoin(order.member, member).fetch()
    .leftJoin(order.orderItems, orderItem).fetch()
    .list(order);

from 절에 여러 조인을 사용하는 세타 조인 방법이다.

QOrder order = QOrder.order;
QMember member = QMember.member;

query.from(order, member)
    .where(order.member.eq(member))
    .list(order);

 

출처: JAVA 표준 ORM JPA 프로그래밍 (저자 : 김영한)

728x90

'QueryDSL' 카테고리의 다른 글

(QueryDSL) 동적쿼리(feat. BooleanBuilder)  (0) 2022.06.18
(JPA)프로젝션 feat.QueryDSL..  (0) 2022.06.18
페이징과 정렬(feat.queryDSL)  (0) 2022.06.17
검색 조건 쿼리(feat. QueryDSL)  (0) 2022.06.17
기본 Q 생성  (0) 2022.06.17