parent
のコレクションを持つ がありますproperty
。それぞれproperty
にpropertyclass
と がありvalue
ます。特定の添付ファイルの添付リストでparent
並べ替えられたリストを返したいvalue
property
propertyclass
が車を表しているとしましょう。「色」を持つparent
が存在します。「color」プロパティの値で並べ替えられたすべての車のリストを返したいと考えています。property
propertyclass
単純な SQL では、これは簡単です。相関サブクエリで並べ替えることができます。
SELECT * FROM [Parent]
ORDER BY (SELECT [Value] FROM [Property] WHERE [PropertyClass] = 'Color'
AND [ParentId] = [Parent].[Id])
しかし、NHibernate でこれを達成する方法がまったくわかりません。
Subquery プロジェクションを作成し、それを使用してクエリの order-by を設定するところまで来ました。
var dc = DetachedCriteria.For<Core.Property>()
.Add(Restrictions.Eq("PropertyClass", sortByProperty))
.SetProjection(Projections.Property("Value"));
var query = baseQuery.OrderBy(Projections.SubQuery(dc));
しかし、これによって生成された order-by 句は、相関サブクエリの部分が欠落[ParentId] = [Parent].[Id]
しているため、無効な sql です。このサブクエリをベース クエリに関連付けるにはどうすればよいですか?