Hibernate Criteria:使用group by子句计划Count

时间:2010-10-12 22:06:37

标签: nhibernate hibernate criteria nhibernate-criteria

我想执行以下SQL

select count(*) as myCount from user group by name;

我为同样的

提出了以下标准
DetachedCriteria.ForClass(typeof(UserDTO))
    .setProjections(Projections.ProjectionList()
                        .Add(Projections.rowCount(),"myCount")
                        .Add(Projections.groupProperty("this.name"));

我将结果作为计数和名称对返回,我怎样才能从中获得计数。

2 个答案:

答案 0 :(得分:0)

我认为你不能用Criteria做到这一点,但是使用HQL很容易。它与您的SQL查询完全相同,但使用实体/属性名称而不是表/列名称。

答案 1 :(得分:0)

如果按列只有一个组,则可以使用count distinct。

HQL:

select count(distinct name) as myCount from user

标准:

DetachedCriteria.ForClass(typeof(UserDTO))
.setProjections(Projections.ProjectionList()
                    .Add(Projections.countDistinct("name"),"myCount"));