NHibernateQueryOverで次のクエリを実装しようとしています。
SQL
SELECT
SUM(GrossChargeAmount)
FROM Charges
INNER JOIN Account on Account.Chargekey = Charges.Chargekey
SELECT
SUM(GrossChargeAmount),
Account.AccountHolder
FROM Charges
INNER JOIN Account on Account.Chargekey = Charges.Chargekey
GROUP BY
Account.AccountHolder
NHibernate:
var accountAlias = null;
var baseQuery = session.QueryOver<Charges>()
.JoinAlias(c => c.Account, () => accountAlias)
.SelectList(s => s.SelectSum(c => c.GrossChargeAmount))
baseQueryを構築するコードがあります。次に、メソッドパラメータに応じて、次のようにGROUPBYをbaseQueryに追加します。
baseQuery.SelectList(s => s.GroupBy(() => accountAlias.AccountHolder)
ただし、これにより、baseQueryのプロジェクションがリセットされ、基本的に最初のプロジェクションが「上書き」されます(.SelectList(s => s.SelectSum(c => c.GrossChargeAmount)))。この段階では、クエリの実行には、GROUP BYだけのSUM()はありません。
TLDR; Nhibernate QueryOverインスタンスにプロジェクションを追加するにはどうすればよいですか?
最後になりましたが、私はNHibernate2.0.50727で実行しています。