簡體   English   中英

NHibernate:如何使用條件表達特定的“分組依據”查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM