コレクション(NHibernate 3.2.0)のプロパティの集計によってクエリを並べ替えようとしています。
サンプルは次のとおりです。
CurrentSession.CreateCriteria<Note>()
.Add(Subqueries.PropertyIn("Id",
DetachedCriteria.For<SubNote>()
.SetProjection(Projections.ProjectionList()
.Add(Projections.Alias(Projections.Max("Date"), "maxDate")))
.AddOrder(Order.Desc("maxDate")))
.List<Note>();
これは機能しません。「注」にプロパティ「maxDate」がないことを示しています。
私が欲しいのは、SubNoteのコレクションの最大日までにNoteを注文することです。
ありがとう!
解決
var subQuery = DetachedCriteria
.For<SubNote>("sn")
.SetProjection(
Projections.Alias(Projections.Max("Date"), "maxDate"))
.Add(Restrictions.EqProperty("Note.Id", "n.Id"));
var results = CurrentSession.CreateCriteria<Note>("n")
.AddOrder(Order.Desc(Projections.SubQuery(subQuery)))
.List<Note>();