본문 바로가기

스프링

[Query Dsl] 연관관계가 없는 엔티티들 조인하기

보통 연관관계가 있을 때는 "leftJoin(member.team, team)" 처럼 join 문안에 연관된 엔티티를 명시해 준다.

하지만, 연관관계가 없는 엔티티들은 아래와 같이 외부 조인할 때는 "on"을 통해 할 수 있다.

List<Tuple> result = queryFactory
    .select(member, team)
    .from(member)
    .leftJoin(team).on(member.username.eq(team.name))
    .fetch();

이때, 파라미터 수를 주의해야한다.

  연관관계 ⭕ : leftJoin(entity1, entity2).where(조건 명시)

  연관관계 ❌ : leftJoin(entity1).on(조건 명시)

 

즉, 연관관계가 없을 때는 leftJoin의 파라미터로 엔티티를 1개만 넣어줘야한다.

 

출처

https://www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84 (김영한님 querydsl 강의)