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
float
i stedet for endouble
på 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.Oracle10gDialect
for at få det til at brugefloat
for SQL-typenDOUBLE
public 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.