인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

작성자 없음

작성자 정보가 삭제된 글입니다.

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

작성

·

192

·

수정됨

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

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기