Vlad Mihalce..
13
正如我在本文中所解释的那样,您有很多选项可以将投影映射到DTO结果集:
DTO使用Tuple和JPQL进行投影
List postDTOs = entityManager.createQuery(
"select " +
" p.id as id, " +
" p.title as title " +
"from Post p " +
"where p.createdOn > :fromTimestamp", Tuple.class)
.setParameter( "fromTimestamp", Timestamp.from(
LocalDateTime.of( 2016, 1, 1, 0, 0, 0 )
.toInstant( ZoneOffset.UTC ) ))
.getResultList();
assertFalse( postDTOs.isEmpty() );
Tuple postDTO = postDTOs.get( 0 );
assertEquals(
1L,
postDTO.get( "id" )
);
使用Constructor Expressionand和JPQL进行DTO投影
List postDTOs = entityManager.createQuery(
"select new com.vladmihalcea.book.hpjp.hibernate.query.dto.projection.jpa.PostDTO(" +