Toto je známé omezení validátoru schématu, zkontrolujte HHH-2315 . Takže zde máte tři možnosti (ve skutečnosti čtyři, ale myslím, že deaktivace ověření není žádoucí). Buď:
-
Použijte
float
místodouble
na úrovni Java – to však nemusí být možnost. -
Oprava
org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo)
přidat speciální podmínku pro tento konkrétní případ – toto není opravdu lehká možnost. -
Rozšiřuje
org.hibernate.dialect.Oracle10gDialect
aby používalfloat
pro typ SQLDOUBLE
public class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); } protected void registerNumericTypeMappings() { super.registerNumericTypeMappings(); registerColumnType( Types.DOUBLE, "float" ); } }
Pozdější možnost se zdá být bezpečná, ale bude vyžadovat určité testování, aby se zjistilo, zda nezavádí žádnou regresi. Nedíval jsem se na kód ovladače JDBC společnosti Oracle, takže nemohu říci, jak float
a double precision
se liší na úrovni řidiče.