【问题标题】:Hibernate Criteria: Projecting Count with group by clauseHibernate Criteria: Projecting Count with group by 子句
【发布时间】:2011-04-24 13:59:37
【问题描述】:

我要执行下面的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"));

我以计数和名称的形式返回结果,我怎样才能从中得到计数。

【问题讨论】:

  • 获取多个数字而不参考它们对应的内容有什么用?
  • 我正在开发的应用程序具有使用存储库进行数据访问的架构。有预定义的存储库来获取对象。因此获取的对象需要实现某些接口。在这样的架构下,我无法检索由该标准返回的对象。

标签: nhibernate hibernate criteria nhibernate-criteria


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    HQL:

    select count(distinct name) as myCount from user
    

    标准:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-17
      • 2012-01-19
      • 2020-08-02
      • 2019-07-29
      • 1970-01-01
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多