0

parentのコレクションを持つ がありますproperty。それぞれpropertypropertyclassと がありvalueます。特定の添付ファイルの添付リストでparent並べ替えられたリストを返したいvaluepropertypropertyclass

が車を表しているとしましょう。「色」を持つparentが存在します。「color」プロパティの値で並べ替えられたすべての車のリストを返したいと考えています。propertypropertyclass

単純な 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 です。このサブクエリをベース クエリに関連付けるにはどうすればよいですか?

4

1 に答える 1