Будьте в спящем режиме: Найденный: плавание, ожидаемое: двойная точность

У меня есть проблема с отображением Плавающего типа данных двойной точности 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 г

9
задан Frederic Morin 27 March 2010 в 23:38
поделиться

2 ответа

Требуется дополнительная информация. Стол двойной? Я не знаком с 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.

4
ответ дан 4 December 2019 в 11:41
поделиться

У нас была такая же проблема. Мы решили ее, убедившись, что в явном виде задали тип столбца в связке, вот так:

<property name="performance" type="double">
  <column name="PERFORMANCE" sql-type="float" />
</property>
1
ответ дан 4 December 2019 в 11:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: