目前在使用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.这只是测试的中间代码。 提前感谢您提供一段代码。
答案 0 :(得分:0)
为了完整性,正如Mark W所提出的,这是演员阵容的解决方案:
List<Object[]> list = (List<Object[]>) q.getResultList();