1) 기본 조인
/**
* 팀 A에 소속된 모든 회원
*/
@Test
public void join() throws Exception{
List<Member> result = queryFactory
.selectFrom(member)
.join(member.team, team)
.where(team.name.eq("teamA"))
.fetch();
assertThat(result)
.extracting("username")
.containsExactly("member1", "member2");
}
2) 세타 조인
/**
* 세타 조인(연관관계가 없는 필드로 조인)
* 회원의 이름이 팀 이름과 같은 회원 조회
*/
@Test
public void theta_join() throws Exception{
em.persist(new Member("teamA"));
em.persist(new Member("teamB"));
List<Member> result = queryFactory
.select(member)
.from(member, team)
.where(member.username.eq(team.name))
.fetch();
assertThat(result)
.extracting("username")
.containsExactly("teamA", "teamB");
}
'개발이 좋아서 > QueryDSL이 좋아서' 카테고리의 다른 글
10장 조인 - 페치조인 (0) | 2023.05.15 |
---|---|
9장 조인 - on절 (0) | 2023.05.15 |
7장 집합 (1) | 2023.05.12 |
6장 페이징 (0) | 2023.05.12 |
5장 정렬 (0) | 2023.05.12 |