작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
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();
}