0

次のエンティティがあります

class BaseClass
{
  public int Id{get; set;}
}

class SubClassOne : BaseClass
{
  public string MyPropertyOne{get; set;}
}

class SubClassTwo : BaseClass
{
  public string MyPropertyTwo{get; set;}
}

ここで、ページングを含め、既存のすべてのエンティティ (タイプ SubClassOne および SubClassTwo) を 1 つのグリッドに表示する必要があります。

問題は、すべてのサブクラスに独自のプロパティがあり、ユーザーが検索できるため、クエリで必要になることです。

したがって、Future() は、ページングが機能しないため、私が知る限りオプションはありません。純粋な sql では、UNION を使用して大きなクエリを作成します。私の知る限り、nhibernate は UNION と直接連携しません。直接SQLを使用して、結果をエンティティSubClassOneおよびSubClassTwoに変換することは何とか可能ですか?

4

1 に答える 1

0

更新しました:

ポリモーフ クエリで動作するはずです

var results = session.Query<BaseClass>()
    .Where(bc => ((SubClassOne)bc).MyPropertyOne == "Foo")
    .ToList();

// or
var results = session.QueryOver<BaseClass>()
    .Where(bc => ((SubClassOne)bc).MyPropertyOne == "Foo")
    .List();

注: 一貫性のあるページを取得するには、ID で並べ替えたほうがよいでしょう

于 2012-09-19T12:36:15.280 に答える