0
我想從的ICriteriaNHibernate的ICritera子查詢合併與父值
生成的SQL語句select c.Id,
sum(c.Amount) Amount,
(select COALESCE(max(AuditDate), c.WhenAdded) FROM Audit a WHERE c.Id = a.CId) StatusDate
from c
join l
on c.Id = l.CId
Group By c.Id, c.WhenAdded
到目前爲止,我已經
ICriteria crit = CurrentSession.CreateCriteria<C>()
.CreateAlias("L", "l")
.SetProjection(Projections.ProjectionList()
.Add(Projections.Group<C>(x => x.Id), "Id")
.Add(Projections.Sum("l.Amount"), "Amount")
.Add(Projections.SubQuery(DetachedCriteria.For<Audit>("ca")
.SetProjection(Projections.ProjectionList().Add(
Projections.SqlFunction("COALESCE",
NHibernateUtil.DateTime,
Projections.Max<ClaimAudit>(x=> x.AuditDate),
Projections.Property<C>(x => x.WhenAdded)), "StatusDate"))))
.SetResultTransformer(Transformers.AliasToBean<CDto>());
,但我不能在的聚結得到父列子子查詢。我得到下面的異常
找不到財產C.WhenAdded
我知道,子查詢是尋找在子查詢稱爲WhenAdded列,但不知道如何告訴它的父看? 關於如何實現這一點的任何想法?
ps。我需要以這種融合的方式來做到這一點,否則我會得到不正確的金額總和。所以沒有任何建議可以在沒有子查詢的情況下重新編寫,除非這是考慮到的。
謝謝。
扣,我是這麼領悟了約2小時前:) – sianabanana