2016년 3월 23일 수요일

[JPA,Querydsl강좌]JPA Query(QueryDSL4.X) –쿼리결과를 특정빈에 담기(Bean population) 

 쿼리 결과를 엔티티가 아닌 특정한 자바객체(DTO, VO)로 받고 싶은 경우 Pjojections를 사용하면 되는데 .bean()을 사용하면 Setter로 값을 채우고 .field()라고 하면 필드(멤버변수)에 직접 접근하여 값을 채우며, .constructor() 라고 하면 생성자를 통해 값을 채운다. 

[ename, sal 필드를 갖는 EmpDTO가 있다면] 

아래는 Setter를 통해 값을 저장한다. 

List<EmpDTO> dtos = query 
.select( 
Projections.bean(EmpDTO.class, emp.ename, emp.sal)) 
.fetch(); 

아래는 필드에 직접 값을 저장한다. 

List<EmpDTO> dtos = query 
.select( 
 Projections.fields(EmpDTO.class, emp.ename, emp.sal)) 
.fetch(); 

댓글 없음:

댓글 쓰기