我们有一个用例来计算不。实际查询返回的行数。我没有得到如何在hibernate中使用标准。 例如,假设我想运行查询
select sum(TOTAL_EARNINGS) from table where column1 = 'value1' group by column2);
除了这个查询结果,我还希望通过上面的查询得到总行数返回(上面的查询也可能有rownum限制,但对于总行数,我必须忽略rownum限制)。
select count(*) from (select sum(TOTAL_EARNINGS) from table
where column1 = 'value1' group by column2);
有没有简单的方法来获取这些数据。我可以运行单独的查询来获取计数数据,但我没有得到如何使用条件在hibernate中编写它。我甚至无法在SubQueries中看到任何可以使用的选项
答案 0 :(得分:0)
通常使用标准可以使用投影。 如果你有一个由Hibernate映射的实体“你的”,你可以这样做:
<强>被修改强>: 根据您的评论,您需要两个结果,总计数和按结果分组。
//the group by results...
List result1 = session.createCriteria("Your.class").setProjection(Projections.projectionList()
.add(Projections.groupProperty("column2"))
.add(Projections.sum("totalErnings"))
).list();
//the total count result
return (Integer) session.createCriteria("Your.class").add(Restrictions.eq("column1", val)).setProjection(Projections.rowCount()).uniqueResult();