需要有关HIbernate计数查询的帮助

时间:2015-02-11 12:30:19

标签: java hibernate

我们有一个用例来计算不。实际查询返回的行数。我没有得到如何在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中看到任何可以使用的选项

1 个答案:

答案 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();