To jest znane ograniczenie walidatora schematu, sprawdź HHH-2315 . Masz tutaj trzy opcje (właściwie cztery, ale myślę, że dezaktywacja walidacji nie jest pożądana). Albo:
-
Użyj
floatzamiastdoublena poziomie Java - może to jednak nie być opcją. -
Łata
org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo)aby dodać specjalny warunek dla tego konkretnego przypadku - to naprawdę nie jest lekka opcja. -
Rozszerza
org.hibernate.dialect.Oracle10gDialectaby używałfloatdla typu SQLDOUBLEpublic class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); } protected void registerNumericTypeMappings() { super.registerNumericTypeMappings(); registerColumnType( Types.DOUBLE, "float" ); } }
Późniejsza opcja wydaje się bezpieczna, ale będzie wymagała pewnych testów, aby sprawdzić, czy nie wprowadza żadnej regresji. Nie patrzyłem na kod sterownika Oracle JDBC, więc nie mogę powiedzieć, jak float i double precision różnią się na poziomie kierowcy.