select 절에 조회할 대상을 지정하는 것을 프로젝션이라고 한다.
쿼리타입으로 조회
List<Member> members = em.createQuery("select m from Member m",
Member.class)
.getResultList();
for (Member member1 : members) {
System.out.println("member1 = " + member1.getAge());
}
Object[] 타입으로 조회
List resultList = em.createQuery("select m.age,m.username from Member m")
.getResultList();
Object o=resultList.get(0);
Object[] result=(Object[]) o;
System.out.println("result = " + result[0]);
System.out.println("result = " + result[1]);
new 명령어로 조회
단순값을 원하는 대로 클래스 만들어서 DTO로 뽑는다.
ex)select new jpql.MemberDTD(m.username,m.age) from Member m
new 패키지명.클래스명(뽑을 대상들)~쿼리~
public class MemberDTD {
private String username;
private int age;
public MemberDTD(String username, int age) {
this.username = username;
this.age = age;
}
public MemberDTD() {
}
@Override
public String toString() {
return "MemberDTD{" +
"username='" + username + '\'' +
", age=" + age +
'}';
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
List<MemberDTD> members = em.createQuery("select new jpql.MemberDTD(m.username,m.age) from Member m",
MemberDTD.class)
.getResultList();
for (MemberDTD memberDTD : members) {
System.out.println("memberDTD = " + memberDTD);
}
'Developer' 카테고리의 다른 글
[JPA]JOIN (0) | 2020.09.21 |
---|---|
[JPA]페이징 (0) | 2020.09.21 |
[JPA]Native Query (0) | 2020.09.21 |
[JPA]QueryDSL - 동적쿼리 실무사용권장 (0) | 2020.09.21 |
[JPA]Criteria (0) | 2020.09.21 |