NHibernate,当条件有一个分组时获取行数

标签 nhibernate criteria

我需要从条件查询中获取行数,并且条件按投影分组。 (需要让分页工作)

例如。

projectionList.Add(Projections.GroupProperty("Col1"), "col1")
              .Add(Projections.CountDistinct("Col2"), "Count");

我需要避免 CreateSQL,因为我有很多标准......而且限制等很复杂。

你能做一个子标准(分离)然后select count(*) from .. ?想不通怎么办?

编辑:我通过从标准中获取 sql 然后修改它来解决它,以便它现在可以工作! GetSql from criteria

最佳答案

不完全确定你想要什么,但这样的事情应该可行(如果我正确理解你的问题):

var subQuery = DetachedCriteria.For<SomeClass>()
   .Where(... add your conditions here ...);

var count = Session.CreateCriteria<SomeClass>()
   .Where(Property.ForName("Col1").In(
      CriteriaTransformer.Clone(subQuery).SetProjection(Projections.Property("Col1"))
   .SetProjection(Projections.Count())
   .FutureValue<int>();

var results = subQuery.GetExecutableCriteria(Session)
            .SetProjection(Projections.GroupProperty("Col1"), "col1"),
                           Projections.CountDistinct("Col2"), "Count")
            ).List<object[]>();

关于NHibernate,当条件有一个分组时获取行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106124/

相关文章:

java - 是否允许在一个 Criteria 内多次使用相同的 DetachedCriteria?

sql - hibernate 如何使用空字符串进行相等限制?

nhibernate - 流畅的 NHibernate HasMany 不插入父 ID

c# - 通过 NHibernate 在不加载对象的情况下更新一对多关系

mysql - 无法比较日期

c# - 我如何在 C# 中实现数据网格行之间的这种关系?

.net - 设置 NLS_LANG 以进行 Oracle 管理的数据访问

c# - 将断开连接的对象附加到 NHibernate session ;最佳实践?

nhibernate - 从域对象访问服务的规则

java - Java/Hibernate Criteria Query API 是否可以防止注入(inject)?