실무에서 많이 사용한다.
@Query("select m.username from Member m")
List<String> findUsernameList();
@Test
public void findUsernameList() {
Member m1 = new Member("AAA", 10);
Member m2 = new Member("BBB", 20);
memberRepository.save(m1);
memberRepository.save(m2);
List<String> result = memberRepository.findUsernameList();
assertThat(result.get(0)).isEqualTo("AAA");
assertThat(result.get(1)).isEqualTo("BBB");
}
DTO로 조회해 보자. 복잡하게 가져오고 싶을 때
@Data
@AllArgsConstructor
public class MemberDTO {
private Long id;
private String username;
private String teamName;
}
@Query("select new study.datajpa.dto.MemberDTO(m.id, m.username, t.name) from Member m left join m.team t")
List<MemberDTO> findMemberDTO();
@Test
public void findMemberDTO() {
Team teamA = new Team("teamA");
Team teamB = new Team("teamB");
teamRepository.save(teamA);
teamRepository.save(teamB);
Member member1 = new Member("member1", 10, teamA);
Member member2 = new Member("member2", 20, teamB);
memberRepository.save(member1);
memberRepository.save(member2);
List<MemberDTO> result = memberRepository.findMemberDTO();
assertThat(result.get(0).getTeamName()).isEqualTo(member1.getTeam().getName());
}