テーブルOrderとテーブルLineの間には単純な1対多の関係があります。
各OrderエンティティとLine.Valueフィールドの合計を報告するクエリが必要です。
私はHQLでこれを行うことができます:
select order, sum(line.Value) as LineValue
from Order as order
join order.Lines as line
group by order
ここまでは順調ですね。これを実行すると、オブジェクト配列のリストが表示されます。ここで、[0]は順序、[1]は行の値の合計です。
基準APIで同じことを行うにはどうすればよいですか?
私が得ることができる最も近いものは次のようなものです:
session.CreateCriteria(typeof(Order))
.CreateAlias("Lines", "l")
.SetProjection(Projections.ProjectionList()
.Add(Projections.GroupProperty("Id"))
.Add(Projections.GroupProperty("Customer"))
/* ... ditto for each Order field ... */
.Add(Projections.Sum("l.Value"))
返品したい注文から各プロパティを手動で追加する必要があります。すべてのOrderフィールドでグループ化することを指定するにはどうすればよいですか?