2

次のエンティティ構造があるとします。

Document
- DocumentA
- DocumentB

基本クラス Document には、フィールドIdNameCreateDateがあります。結合されたサブクラス DocumentA には、フィールドBookPagesがあります。DocumentB にはMagazinePagesがあります。

問題は、基準を使用してレコードを取得しようとするときです。

var prj = Projections.ProjectionList();
foreach (var col in selectColumns)
{
    prj.Add(Projections.Property(col), col);
}
criteria.SetProjection(prj).SetResultTransformer(new AliasToBeanResultTransformer(entityType));

そのため、selectColumnsに2 つのPagesカラムがある場合、NHibernate は最初のカラムからのみデータを選択します。実際、このようなSQLクエリも生成します

SELECT top 15 
this_1_.Pages as y0_
, this_1_.Pages as y1_
, this_.CreationDate as y2_
, this_.CreationAuthor as y3_
, this_.Name as y4_
, this_.Id as y5_
FROM Document this_ 
left outer join DocumentA this_1_ on this_.Id=this_1_.Id 
left outer join DocumentB this_2_ on this_.Id=this_2_.Id 

基準を使用して私の問題を解決する方法を知っている人はいますか? ところで、この構造を変更するオプションはありません。このシステムでは、ユーザーは独自のクラスとネストされたクラスを定義できます。

4

0 に答える 0