четверг, 31 мая 2012 г.

Запрос Hibernate, только с нужными полями


Имеем Entity User и entityManager в одном ejb

public class User implements Serializable{
         private Integer id;
         private String firstName;
 далее еще много других полей этого юзера, которые нам не интересны.
 }

 Хотим следующий запрос
 Select u.id, u.firstname from User u
 Такой запрос вернет объект вида: Object [], а хотим объект типизированный.

 Допустим есть слой ДТО в другом ejb

package com;

 public class TestPojo implements Serializable{

//создаем конструктор с 2-мя полями, поле firstName в этом классе это title
 public TestPojo(int id, String firstName) {
this.id = id;
title = firstName;
}
}

 Query query = entityManager.
                         createQuery("Select new com.TestPojo(u.id,u.firstName) FROM User u");
List<TestPojo> testPojoList=query.getResultList();

 Смотрим логи и видим что достаются только те поля, которые нужны.
 select
        user0_.id as col_0_0_,
        user0_.firstname as col_1_0_
    from
        tbl_users user0_