NHibernate - QueryOver-Kriterien erscheinen in Where statt in Having-Klausel, error
Ich habe ein Problem in QueryOver, wo Group by verwendet wird, und habe einige Kriterien in der where-Klausel. Möchten Sie einige Kriterien mit SUM () - Werten in der Having-Klausel verschieben, aber jedes Mal, wenn sie in der Where-Klausel angezeigt werden, und dies führt zu einem Fehler.**Error** ="*An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference*"
Conjunction conjunction = Restrictions.Conjunction();
Conjunction havingconjun = Restrictions.Conjunction();
conjunction.Add<Vendor>(p => v.Name == "Some Vendor");
havingconjun.Add(Restrictions.Gt(
Projections.Sum(Projections.Property(() => v.Payments),
Convert.ToDouble(SomeInvoice.Value)));
var reportModels =
Session.QueryOver<Vendor>(() => v)
.Where(conjunction)
.Where(havingconjun)
.SelectList(list => list
.SelectGroup(() => v.Number).WithAlias(() => vModel.VendorNumber)
.SelectGroup(() => vtypeCode.Code).WithAlias(() => vModel.VendorType)
.SelectGroup(() => v.Name).WithAlias(() => vModel.VendorName))
.TransformUsing(Transformers.AliasToBean<VendorAnalysisReportModel>())
.List<VendorAnalysisReportModel>();
Erwartetes Ergebnis
SELECT
V.VENDORNUMBER, V.VENDORTYPE, V.VENDORNAME, SUM(V.PAYMENTS)
FROM VENDOR V
WHERE V.NAME = "Some Vendor"
GROUP
BY V.VENDORNUMBER, V.VENDORTYPE, V.VENDORNAME
HAVING SUM(V.PAYMENTS) > somevalue
Getting Now:
SELECT
V.VENDORNUMBER, V.VENDORTYPE, V.VENDORNAME, SUM(V.PAYMENTS)
FROM VENDOR V
WHERE V.NAME = "Some Vendor" AND
SUM(V.PAYMENTS) > somevalue
GROUP
BY V.VENDORNUMBER, V.VENDORTYPE, V.VENDORNAME