Dies ist eine bekannte Einschränkung des Schema-Validierers, überprüfen Sie HHH-2315 . Sie haben hier also drei Möglichkeiten (eigentlich vier, aber ich vermute, dass das Deaktivieren der Validierung nicht erwünscht ist). Entweder:
-
Verwenden Sie ein
float
statt einesdouble
auf Java-Ebene - dies ist jedoch möglicherweise keine Option. -
Patch
org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo)
um eine spezielle Bedingung für diesen speziellen Fall hinzuzufügen - das ist nicht wirklich eine leichte Option. -
Erweitert den
org.hibernate.dialect.Oracle10gDialect
um es zu machen, benutzefloat
für den SQL-TypDOUBLE
public class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); } protected void registerNumericTypeMappings() { super.registerNumericTypeMappings(); registerColumnType( Types.DOUBLE, "float" ); } }
Die letztere Option scheint sicher zu sein, erfordert jedoch einige Tests, um festzustellen, ob sie keine Regression einführt. Ich habe mir den JDBC-Treibercode von Oracle nicht angesehen, daher kann ich nicht sagen, wie float
und double precision
unterscheiden sich auf der Treiberebene.