我将JPA 2.0与Hibernate一起使用。 如果我想使用CriteriaQuery从表中选择某些列,我必须声明它:
CriteriaQuery<Object[]> criteria = cb.createQuery(Object[].class);
Root<Event> root = criteria.from(Event.class);
Path<Long> pid = root.get(Event_.id);
Path<Date> did = root.get(Event_.eventTime);
criteria.select( cb.array(pid, did) );
criteria.where(cb.lessThan(root.get(Event_.id), 10L));
List<Object[]> evs = em.createQuery( criteria ).getResultList();
for ( Object[] ev : evs ) {
System.out.println(ev[0] + " " + ev[1]);
}
所以,我得到了一系列选定的属性。但是,我能以某种方式获取一个Event类的实例列表(在我的例子中),其中未选择的属性为null?
Event:
id: 234
typeid: null
eventtime: 12-03-1990
authorid: null
etc...
当我使用简单的Hibernate API标准时就是这样。