Dette er en kendt begrænsning i skemavalidatoren, tjek HHH-2315 . Så du har tre muligheder her (faktisk fire, men jeg gætter på, at deaktivering af validering ikke er ønsket). Enten:
-
Brug en
floati stedet for endoublepå Java-niveau - dette er måske ikke en mulighed. -
Patch
org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo)at tilføje en speciel betingelse for denne særlige sag - dette er egentlig ikke en let mulighed. -
Udvider
org.hibernate.dialect.Oracle10gDialectfor at få det til at brugefloatfor SQL-typenDOUBLEpublic class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); } protected void registerNumericTypeMappings() { super.registerNumericTypeMappings(); registerColumnType( Types.DOUBLE, "float" ); } }
Den senere mulighed virker sikker, men vil kræve nogle test for at se, om den ikke introducerer nogen regression. Jeg kiggede ikke på Oracles JDBC-driverkode, så jeg kan ikke sige, hvordan float og double precision afvige på førerniveau.