Life Developer
인생 개발자
[JPA]프로젝션 - 어떻게 select를 할지

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
  Comments,     Trackbacks