我想使用Hibernate Criteria实现以下SQL查询:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name <operator> value
GROUP BY column_name

我试图用 hibernate 标准来实现这一点,但是没有成功。

谁能给我一个例子,如何用 hibernate 标准来做到这一点?
谢谢!

最佳答案

请引用this示例。主要要点是使用groupProperty()以及Projections类提供的相关聚合函数。

例如 :

SELECT column_name, max(column_name) , min (column_name) , count(column_name)
FROM table_name
WHERE column_name > xxxxx
GROUP BY column_name

其等效标准对象是:
List result = session.createCriteria(SomeTable.class)
                    .add(Restrictions.ge("someColumn", xxxxx))
                    .setProjection(Projections.projectionList()
                            .add(Projections.groupProperty("someColumn"))
                            .add(Projections.max("someColumn"))
                            .add(Projections.min("someColumn"))
                            .add(Projections.count("someColumn"))
                    ).list();

10-08 02:25