如何使用 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
即,它为每一行提供所有 Table1 行和 Table2.Data,即使它没有 Table2 数据(然后将给出 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 来自一个父类 TableG。Sql 查询现在相应更新。