inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

querydsl 조회 쿼리 출력이 이상합니다.

230

작성자 없음

작성한 질문수 0

0

Team Entity코드입니다.

package study.QueryDslClass.entity;

import jakarta.persistence.*;
import lombok.*;

import java.util.ArrayList;
import java.util.List;

@Entity
@Getter @Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString(of = {"id", "teamName"})
public class Team {

    @Id @GeneratedValue
    @Column(name = "team_id")
    private Long id;
    private String name;

    @OneToMany(mappedBy = "team")
    private List<Member> members = new ArrayList<>();

    public Team(String name) {
        this.name = name;
    }
}

테스트 코드입니다.

@Test
    public void teamTest() throws Exception {
        List<Team> result = query.selectFrom(team)
                .fetch();
        for (Team team1 : result) {
            System.out.println(team1);
        }
    }

해당 테스트 코드 진행 시 team 객체의 id와 name이 출력 되어야 한다고 생각하는데 team의 id만 출력됩니다.

출력 로그 입니다.

2023-06-27T17:22:50.740+09:00 DEBUG 24340 --- [ main] org.hibernate.SQL

select

t1_0.team_id,

t1_0.name

from

team t1_0

2023-06-27T17:22:50.741+09:00 INFO 24340 --- [ main] p6spy : #1687854170741 | took 0ms | statement | connection 4| url jdbc:h2:tcp://localhost/~/querydsl

select t1_0.team_id,t1_0.name from team t1_0

select t1_0.team_id,t1_0.name from team t1_0;

Team(id=1)

Team(id=2)

 

답변 2

0

이원태

Team entity의 lombok annotation 중 ToString annotation 의 of옵션이 틀렸었습니다.

필드 명과 동일하게 고쳐서 해결했습니다.

@ToString(of = {"id", "teamName"}) -> @ToString(of = {"id", "name"})

0

이원태

테스트 용 데이터를 DB에 넣기 위한 beforeEach 부분입니다. + 따로 select절에 team.name으로 주면 잘 나옵니다.

    @BeforeEach
    public void before() {
        query = new JPAQueryFactory(em);
        Team teamA = new Team("teamA");
        Team teamB = new Team("teamB");
        em.persist(teamA);
        em.persist(teamB);

        Member member1 = new Member("member1", 10, teamA);
        Member member2 = new Member("member2", 20, teamA);
        Member member3 = new Member("member3", 30, teamB);
        Member member4 = new Member("member4", 40, teamB);
        em.persist(member1);
        em.persist(member2);
        em.persist(member3);
        em.persist(member4);

        em.flush();
        em.clear();
    }

케이테스트 서버 운영 방법

2

53

1

맥유저 입장의 고려해주세요

2

83

1

수업 잘 들었습니다.

2

26

2

실행과정 질문입니다.

2

27

1