从聚合HQL查询中获取结果

时间:2012-03-07 08:16:20

标签: java-ee jpa hql aggregate

目前在使用HQL的简单聚合函数获取结果时遇到了麻烦。这是我的疑问:

Query q = entityManager.createQuery("SELECT t.id.seq, COUNT(*) AS nb FROM TPEntity t WHERE t.id.num=:num GROUP BY t.id.seq");
q.setParameter("num", num);

使用调试器,查询似乎正确执行。但是,我找不到提取结果的正确方法。我确实得到了大量的ClassCastException。我当前的代码没有引发任何异常,但不起作用:

List<Object> list = (List<Object>) q.getResultList();
if(list.size() > 0){
  for(Object o : list){
    if(o instanceof List){
      return true;
    }
  }
}
return false;

如果调试器显示o的类型为“AbstractList”,并且其中包含两个元素,则总是返回false。当然返回true并不是最终的代码,我想测试聚合值是否大于1.这只是测试的中间代码。 提前感谢您提供一段代码。

1 个答案:

答案 0 :(得分:0)

为了完整性,正如Mark W所提出的,这是演员阵容的解决方案:

List<Object[]> list = (List<Object[]>) q.getResultList();