4

我正在使用 Fluent NHibernate 查询我的 Oracle 11g 数据库。在流畅的映射文件中,我有一个看起来像这样的映射

Map(x => x.WaterLevel).Formula("CAST(WATER_LEVEL AS DOUBLE PRECISION )")

但是,当我运行测试时,我得到

Oracle.DataAccess.Client.OracleException : ORA-00907: missing right parenthesis

由于 SQL 翻译中的附加字符串 (this_.):

 CAST(this_.WATER_LEVEL AS this_.DOUBLE this_.PRECISION )

我已经提到了 如何停止 NHibernate(通过 ActiveRecord)添加 this_。到公式中的表名 以及如何停止 NHibernate 将“或 this._property 为空”添加到生成的查询?但建议的解决方案对我不起作用。

4

1 回答 1

0

重现您的问题的唯一方法是关闭方言设置。换句话说,使用NHibernate.Dialect.GenericDialect.

但是这些方言中的任何一种都可以正常工作:

<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory name="myFactory">
     ...
     <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
     // or
     <property name="dialect">NHibernate.Dialect.Oracle9iDialect</property>
     // or
     <property name="dialect">NHibernate.Dialect.Oracle8iDialect</property>

因此,您不必像问题中所述那样创建方言。只需使用现有的一种,这总是比通用的更好的选择......

于 2013-09-07T03:38:15.893 回答