如何在Hibernate中返回许多对象类型

时间:2013-07-09 11:14:41

标签: spring hibernate

我正在使用Hibernate + JSF + Spring3

在查询中,我需要返回许多返回的对象类型。

public ArrayList<ArrayList<Object>> getReportHoursPerUser(){
   return (ArrayList<ArrayList<Object>>)getHibernateTemplate().
          find(" SELECT u , SUM(r.hours) " +
               " FROM Report r, User u " +
               " WHERE r.responsible.idUser = u.idUser ");
}

但是将结果存储在一个对象数组中并不是一个优雅的想法。 而且,我得到了这个例外:

Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.ArrayList

当我在托管Bean中执行此操作时:

reports = reportService.getReportHoursPerUser();
for (int i = 0 ; i <reports.size() ; i++ ){
      User u = (User) reports.get(i).get(0);
}

是否有任何预定义的方法来执行此操作?

谢谢!

1 个答案:

答案 0 :(得分:1)

查询的常用JPA返回类型

find(" SELECT u , SUM(r.hours) FROM Report r, User u " +
           " WHERE r.responsible.idUser = u.idUser ")

ArrayList<Object[]>Object[0]是用户,Object[1]必须是数小时的相关数据类型。