【发布时间】:2026-01-23 12:15:01
【问题描述】:
标准:
var subQuery = DetachedCriteria.For<RecordInfo>();
.Add(Restrictions.Eq("Property1", "some string"))
.Add(Restrictions.EqProperty("Property2", "record.Id"))
.SetProjection(Projections.Max("Id"));
var criteria = session.CreateCriteria(typeof(Record), "record")
.CreateAlias("record.ListOfRecordInfo", "recordInfo")
.Add(Subqueries.PropertyEq("recordInfo.Id", subQuery));
将为 Sybase ASE 15.5 方言生成类似的内容:
SELECT this_.Record_Id as Record1_2_3
...
FROM Record this_
INNER JOIN Record_Info Record_Info_
ON this_.Record_Id = Record_Info_.Property_2
WHERE Record_Info_.Record_Info_Id =
(
SELECT max(this_0_.Record_Info_Id) as y0_
FROM Record_Info this_0_
WHERE this_0_.Property_1 = @p0
AND this_0_.Property_2 = this_.Record_Id
)
问题是生成的 as y0_,Sybase 不允许对我正在使用的 Sybase 版本进行子查询的别名。
如何修改我的查询以使 NHibernate 不会为子查询生成别名?
【问题讨论】:
标签: nhibernate subquery sap-ase hibernate-criteria