У меня есть свойство 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 doc ), но я получаю исключение:
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
Спасибо за любую информацию, которую вы можете предоставить!