보통 연관관계가 있을 때는 "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 강의)
'스프링' 카테고리의 다른 글
[QueryDSL] QueryDSL 설정법(feat.graddle, jpa) (0) | 2024.02.20 |
---|---|
[Query Dsl] On vs Where (0) | 2024.02.20 |
[Query Dsl][JPQL] 서브쿼리 주의사항 (from문에서는 불가능) (0) | 2024.02.20 |
[WAS] 서블렛이란? (0) | 2023.06.02 |
롬복(lombok) 생성자 애너테이션 정리 (0) | 2023.03.20 |