• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

세타조인 질문입니다.

23.01.25 13:26 작성 조회수 467

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님의 프로필

OMG

2023.01.25

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

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

image
.
감사합니다.

김형민님의 프로필

김형민

질문자

2023.01.25

빠른 답변 감사합니다.

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

OMG님의 프로필

OMG

2023.01.25

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

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

OMG님의 프로필

OMG

2023.01.25

바보같은 질문이라뇨 ㅎㅎ

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