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
float
zamiastdouble
na 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.Oracle10gDialect
aby używałfloat
dla typu SQLDOUBLE
public 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.