Това е известно ограничение на валидатора на схемата, проверете HHH-2315 . Така че имате три опции тук (всъщност четири, но предполагам, че деактивирането на валидирането не е желано). Или:
-
Използвайте
floatвместоdoubleна ниво Java - това обаче може да не е опция. -
Пач
org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo)да добавите специално условие за този конкретен случай - това всъщност не е лесна опция. -
Разширява
org.hibernate.dialect.Oracle10gDialectза да го накарате да използваfloatза SQL типDOUBLEpublic class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); } protected void registerNumericTypeMappings() { super.registerNumericTypeMappings(); registerColumnType( Types.DOUBLE, "float" ); } }
По-късният вариант изглежда безопасен, но ще изисква известно тестване, за да се види дали не въвежда регресия. Не погледнах кода на JDBC драйвера на Oracle, така че не мога да кажа как float и double precision се различават на ниво драйвер.