inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

231

작성자 없음

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();
    }

매일 사용시 토큰사용량

1

58

2

인텔리제이 설정 최신화 관련 확인 부탁 드립니다!

1

50

2

5강때 초보가 겪었던 어려움 공유 (극복완료)

1

50

2

클로드 디자인 안에서 프롬프트 작성시?

1

31

1