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