我有一个 C# System.Double 属性,它可能包含类似 1e250 的值:
public virtual double DoubleValue {get; set;}
该属性映射到 BINARY_DOUBLE 列:
<property name="DoubleValue" column="VALUE_BINARY_DOUBLE"/>
Binary_Double 的最大值约为 1.7e+308(Oracle 文档),但出现异常:
ORA-01426:数字溢出
即使通过 SQL+ 执行查询也会出现问题。我必须使用 TO_BINARY_DOUBLE 强制转换才能使其工作。据我了解,提供的数字被隐式转换为 NUMBER:我的查询适用于 1e125(NUMBER 的最大值为 1e126),但不适用于 1e250。
我也尝试了这些映射,但没有成功:
<property name="DoubleValue" column="VALUE_BINARY_DOUBLE" type="System.Double"/>
<property name="DoubleValue" column="VALUE_BINARY_DOUBLE" type="binary"/>
使用:Oracle 11G - NHibernate 2.1.0 - .Net 3.5 SP1
感谢您提供的任何线索!