第一种方法,直接遍历iterator
final String sql="select sum(a.depreciateValue) ,sum(a.originalValue), a.department.id from Assets a group by department.id";
Iterator iterator=assetsDao.createQuery(sql, new Object[]{}).iterate();
while(iterator.hasNext()){
Object[] rows = (Object[]) iterator.next();
System.out.println("累计折旧值: " + rows[0] + "\n原始值: " + rows[1]);
}
第二种方法和第一种方法类似,只是遍历list
final String sql="select sum(a.depreciateValue) ,sum(a.originalValue), a.department.id from Assets a group by department.id";
List<Object[]> list=assetsDao.createQuery(sql, new Object[]{}).list();
for(Object[] rows:list){
System.out.println("累计折旧值: " + rows[0] + "\n原始值: " + rows[1]);
}
第三种方法是使用hibernate调用createSqlQuery(),这个方法注意的地方比较多.
1query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
2query.setResultTransformer(Transformers.aliasToBean(AssetsStatisticsData.class));
等等
比较烦琐,不如前面两种查出数据手动封装