Nhibernate升级了使用*=

Nhibernate升级了使用*=,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,所以我们升级到更新的Nhibernate和流畅的Nhibernate 现在我得到了一个例外: FailedNHibernate.Hql.Ast.ANTLR.QuerySyntaxException:引发了类型为“ANTLR.Runtime.NoviableException”的异常。第1行第459列附近 在这个hql上,它在升级之前工作得很好 选择s.StudId、s.StudLname、s.StudFname、s.StudMi、s.Ssn、s.Sex、s.Dob、et.EnrtypeId、et

所以我们升级到更新的Nhibernate和流畅的Nhibernate

现在我得到了一个例外: FailedNHibernate.Hql.Ast.ANTLR.QuerySyntaxException:引发了类型为“ANTLR.Runtime.NoviableException”的异常。第1行第459列附近

在这个hql上,它在升级之前工作得很好

选择s.StudId、s.StudLname、s.StudFname、s.StudMi、s.Ssn、s.Sex、s.Dob、et.EnrtypeId、et.Active、et.EnrId、sss.StaffName、sss.StaffName、sss.StaffMi、vas.CurrentAge FROM CIS3G.Jcdc.EO.StudentEO s、CIS3G.Jcdc.EO.Enrollmentmente、CIS3G.Jcdc.EO.Enrollmentypeeo、CIS3G.Jcdc.EO.vwstaffo Studentype、CIS3G.sss、,CIS3G.Jcdc.EO.VwAgeStudentEO vas,其中e.EnrId=et.EnrId和s.StudId=vas.StudId和s.StudId=e.StudId和et.EnrtypeId*=sss.EnrtypeId,Isnull sss.StudStaffRoleCd,1044=1044和s.StudId=4000

显然,它不喜欢*=语法,我尝试将其重写为ansi sql外部连接,但没有乐趣

有谁能告诉我我需要将sql更改为什么,这样我才能使外部联接正常工作

谢谢


Eric-

为了获得相关实体,不需要与NHibernate进行显式连接。相反,将这些关系尽可能多地映射到一个

例如,您的学生类可以有一个Referencesx=>x.EnrollmentType。这样,你只需要选择你甚至不需要HQL的学生,如果你知道Id;您可以使用session.Get,也可以导航到其他属性


我建议您阅读

我们在使用ansi sql和调用nhibernate时使用的方法略有不同

有没有办法强制antlr允许t-sql,或者一起停止antlr解析

在我们得到添加antlr解析的版本之前,所有这些sql都工作得很好

在许多地方,我们将T-Sql传递给NHibernate,因为我们从另一个应用程序移植已经编写的所有复杂Sql,并且我们希望避免必须按照ansi标准重写和重新测试所有Sql

ANTR解析不应该只应用于HQL而不是直接SQL吗?你减少了 与其他数据库(如我们的数据库)的本机兼容性

谢谢


Eric=

我担心由于超出我工资等级的决定,我们必须通过我们的库将HQL或SQL直接传递给nhibernate,地图文件无法更改。技术负责人希望逐步迁移到nhibernate,所以我们不是以正常方式使用它。有没有办法通过HQL实现这一点?谢谢,埃里克-