인프런 커뮤니티 질문&답변

김형민님의 프로필 이미지

작성한 질문수

실전! Querydsl

조인 - 기본 조인

세타조인 질문입니다.

해결된 질문

23.01.25 13:26 작성

·

554

1

@Test
void theta_join() {
    em.persist(new Member("teamA"));
    em.persist(new Member("teamB"));
    em.persist(new Member("teamC"));

    List<Member> result = queryFactory
            .select(member)
            .from(member)
            .join(member.team, team)
            .where(member.username.eq(team.name))
            .fetch();

    System.out.println("result = " + result);
    // => result = []


    assertThat(result).extracting("username").containsExactly("teamA","teamB");
}

위와 같은 쿼리문의 결과는 빈 결과값이 나오는데 이유를 모르겠습니다. 바로 밑의 질문이랑 비슷한데 답변이 잘 이해가 되지 않아 질문을 올렸습니다.

답변 1

0

OMG님의 프로필 이미지

2023. 01. 25. 13:38

안녕하세요. 김형민님, 공식 서포터즈 OMG입니다.
.

from절을 강의와 동일하게 해보시겠어요?

image
.
감사합니다.

김형민님의 프로필 이미지
김형민
질문자

2023. 01. 25. 13:47

빠른 답변 감사합니다.

강의 코드는 이해가 가는데 따로 제가 작성한 코드가 왜 빈 결과값이 나오는지 이해가 가지 않아서요 ..

OMG님의 프로필 이미지

2023. 01. 25. 14:33

Team teamA = new Team("teamA");
Team teamB = new Team("teamB");
em.persist(teamA);
em.persist(teamB);
em.persist(new Member("teamA",1,teamA));
em.persist(new Member("teamB",1,teamA));
em.persist(new Member("teamC",1,teamA));

List<Member> result = queryFactory
        .select(member)
        .from(member)
        .join(member.team, team)
        .where(member.username.eq(team.name))
        .fetch();

System.out.println("result = " + result);

새로 해당 테스트에서 추가한 Member는 team이 세팅되어 있지 않습니다.

이 부분을 놓치신게 아닐까요?

김형민님의 프로필 이미지
김형민
질문자

2023. 01. 25. 15:04

아.. 바보 같은 질문이었네요..ㅎㅎ 제가 잠시 미쳤었나 봅니다.. 감사합니다!

OMG님의 프로필 이미지

2023. 01. 25. 15:20

바보같은 질문이라뇨 ㅎㅎ

답변 드린 내용만으로 이해하신 실력이면 충분히 좋은 실력을 가지고 계신거라 생각합니다 :)