0

NHibernate オブジェクトを使用してこの選択を記述する方法は?

Select a.Id, a.Name, b.Data 
From Table1 a, Table2 b
Where a.Id between :1 and :2
And :3 = b.Period(+)
And 1 = b.Type(+)
And a.Id = b.Table1Id(+)
Order by 1

つまり、Table2 データがない場合でも、各行に Table2.Data を含むすべての Table1 行を提供します (その場合は 0 または null が提供されます)。

Table1 と Table2 のクラスとマッピングは既に作成されており、機能します。b.Table1Id の参照も追加されました。

したがって、問題は主に (+) 演算子にあります。

マッピング: Table1 は非常に単純で、どのテーブルも参照していません。表 2:

Table("Table2");
CompositeId()
 .KeyProperty(x => x.Type)
 .KeyProperty(x => x.Table1Id)
 .KeyProperty(x => x.Period);
Map(x => x.Type);
Map(x => x.Table1Id);
Map(x => x.Period);
Map(x => x.Data);
ReferencesAny(x => x.TableG)
 .IdentityType<string>()
 .EntityTypeColumn("Type")
 .EntityIdentifierColumn("Table1Id")
 .AddMetaValue<Table1>("1")
 .AddMetaValue<Table33>("33");

Table1 と Table33 は、1 つの親クラス TableG から継承します。それに応じて SQL クエリが更新されました。

4

1 に答える 1