본문 바로가기

스프링

[Query Dsl] On vs Where

내부 조인 (inner join) ➡️ where 사용

내부 조인일 때는 익숙한 'where'을 사용 ('on'을 사용해도 상관없음. 결과는 동일)

List<Tuple> result = queryFactory
    .select(member, team)
    .from(member)
    .join(member.team, team)
    .where(team.name.eq("teamA"))
    //.on(team.name.eq("teamA")) 요것도 상관은 없다.. 다만, 익숙한 where 사용을 추천
    .fetch();

 

외부 조인 (left join) ➡️ on 사용

외부 조인할 때, 'where' 문 사용 시, 왼쪽 데이터들이 누락된다.

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

 

출처

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