NHibernate Aliasing中的错误

Cox*_*xer 9 c# sql nhibernate formula

我正在使用NHibernate进行数据库管理.在一个类中,我使用以下公式计算属性:

(SELECT MIN(x.timestamp) FROM (SELECT MAX(r.Timestamp) AS timestamp, r.Meter_Id FROM Reading r, Meter m WHERE r.Meter_Id = m.Id AND m.Store_Id = Id GROUP BY r.Meter_Id) AS x)
Run Code Online (Sandbox Code Playgroud)

生成的查询如下所示:

(SELECT MIN(x.timestamp) FROM (SELECT MAX(r.Timestamp) AS timestamp, r.Meter_Id FROM Reading r, Meter m WHERE r.Meter_Id = m.Id AND m.Store_Id = this_.Id GROUP BY r.Meter_Id) AS this_.x)
Run Code Online (Sandbox Code Playgroud)

显然,AS语句中的名称被重命名为this_.x,这会导致错误.

这似乎是一个众所周知的错误:NHibernate JIRA#NH-2878

enyone有解决方案吗?

Jay*_*Jay 1

我可能会弄错,但我实际上不明白为什么在该特定公式中需要别名。

从更一般的意义上来说,您有以下几种选择:

  • 解决这个问题。您可以使用存储过程,或者加载更多数据并在内存中进行计算。
  • 修理它。NHibernate 是开源的——下载代码、查找原因、在测试中隔离它、修复它并发送拉取请求。
  • 找其他人来修复它。如果您的公司正在使用 NHibernate 并且这对他们很重要,他们可能会赞助另一个 NHibernate 贡献者来实施修复。