![](/img/trans.png)
[英]NHibernate Criteria - how correctly use group by statement?
[英]NHibernate: how to express a specific “group by” query with criteria
題:
可以產生以下查詢的條件/預測是什么?
SELECT SUBSTRING(Name, 0, 1) FROM Person GROUP BY SUBSTRING(Name, 0, 1)
(顯然,使用DISTINCT
,但是稍后修復此錯誤時,我將需要計數)。
我這里的主要問題是常量,因為如果我使用
Projections.GroupProperty(Projections.SqlFunction( "SUBSTRING", NHibernateUtil.String, Projections.GroupProperty("Name"), Projections.Constant(0), Projections.Constant(1) ))
我懂了
SELECT SUBSTRING(Name, 0, 1) FROM Person GROUP BY SUBSTRING(Name, , )
從NH 源代碼中顯而易見,但沒有用。 如果我願意
Projections.GroupProperty(Projections.SqlFunction( "SUBSTRING", NHibernateUtil.String, Projections.GroupProperty("Name"), Projections.GroupProperty(Projections.Constant(0)), Projections.GroupProperty(Projections.Constant(1)) ))
然后我得到
SELECT SUBSTRING(Name, @p0, @p1) FROM Person GROUP BY SUBSTRING(Name, ?, ?)
問號似乎是一些未解決的參數,但我不知道為什么。
我才發現
AbstractEntityJoinWalker.InitProjection( SqlString projectionString, SqlString whereString, SqlString orderByString, string /* WTF? */ groupByString, SqlString havingString, LockMode lockMode )
groupByString
的類型看起來非常可疑。
這應該工作(盡管您可能想要SUBSTRING(Name,1,1),但無論如何):
Projections.SqlGroupProjection(
"SUBSTRING(Name, 0, 1) as FirstChar",
"SUBSTRING(Name, 0, 1)",
new [] {"FirstChar"},
new[] {NHibernateUtil.String}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.