실무에서 많이 사용한다.

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