У меня есть проблема с отображением Плавающего типа данных двойной точности Oracle к Java Двойной тип данных. Быть в спящем режиме блок проверки допустимости схемы, кажется, перестал работать, когда Java Двойной тип данных используется.
org.hibernate.HibernateException: Wrong column type in DB.TABLE for column amount. Found: float, expected: double precision
Единственный способ избежать этого состоит в том, чтобы отключить проверку схемы и надеяться, что схема находится в синхронизации с приложением, собирающимся выполненный. Это должно быть зафиксировано, прежде чем это выйдет в производство.
evironment приложения:
- Grails 1.2.1
- Быть-в-спящем-режиме-ядро 3.3.1. GA
- Oracle 10 г
Требуется дополнительная информация. Стол двойной? Я не знаком с Oracle, но это тип с плавающей запятой? В какой тип java.sql.Types
он переводится? Вы можете увидеть отображение java.sql.Types
в тип базы данных в классе диалекта для вашей базы данных. В данном случае это org.hibernate.dialect.Oracle10gDialect
(расширяет 9i и 8i). Похоже, у вас есть
registerColumnType( Types.DOUBLE, "double precision" );
Итак, таблица должна быть определена как с двойной точностью
, а класс java должен быть определен как что-то, что обычно будет отображаться в Types.Double
. двойной
.
Судя по сообщению об ошибке, похоже, что ваша таблица определена как float
, которая будет использовать это сопоставление
registerColumnType( Types.FLOAT, "float" );
, для которого ожидаемый тип java будет тем, что сопоставляется с Types.FLOAT
, обычно плавающий
; значение одинарной точности.
Проще всего изменить таблицу или класс java на соответствие. В качестве альтернативы вы можете указать тип пользователя, который будет отображать значение одинарной точности в значение двойной точности; Я не могу придумать, почему вы действительно захотите это сделать, но, возможно, если бы у вас не было контроля над классом и таблицей, что довольно редко, я бы подумал.
hth.
У нас была такая же проблема. Мы решили ее, убедившись, что в явном виде задали тип столбца в связке, вот так:
<property name="performance" type="double">
<column name="PERFORMANCE" sql-type="float" />
</property>