0

我有三个表:人员、采购、人员和采购之间具有一对多关系的付款,以及人员和付款。

我想生成一份人员报告,显示他们的购买和付款总和。

我可以轻松地为所有人生成一份报告,显示付款或购买的总和,例如:

var query = 
  DetachedCriteria.For<People>("People")
  .CreateAlias("Payments", "paymentsMade");

query.SetProjection(Projections.ProjectionList()
  .Add(Projections.GroupProperty("Id"), "Id")
  .Add(Projections.Sum("paymentsMade.Amount"), "TotalPayments")

我可以在 NHibernate 的单个查询中执行此操作吗?使用标准 API(首选)或 HQL。

4

1 回答 1

2

尝试这样的事情:

var query = @"select
                (select sum(pu.Amount) from Purchase pu where pu.People.Id = ppl.Id),
                (select sum(pa.Amount) from Payments pa where pa.People.Id = ppl.Id) 
              from People ppl";

var results = session
                .CreateQuery(query)
                .List();

或者也许使用临时映射

public class BulkReport
{
    public double Purchases { get; set; }
    public double Payments  { get; set; }
}

var results = session
                .CreateQuery(query)
                .SetResultTransformer(Transformers.AliasToBean(typeof(BulkReport)))
                .List<BulkReport>();

另一种选择是使用MultiQueries

于 2010-12-01T03:10:02.253 回答