Dit is een bekende beperking van de schemavalidator, controleer HHH-2315 . Dus je hebt hier drie opties (eigenlijk vier, maar ik denk dat het deactiveren van validatie niet gewenst is). Ofwel:
-
Gebruik een
float
in plaats van eendouble
op Java-niveau - dit is misschien geen optie. -
Patch
org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo)
om een speciale voorwaarde toe te voegen voor dit specifieke geval - dit is niet echt een lichte optie. -
Breidt de
org.hibernate.dialect.Oracle10gDialect
uit om het te laten gebruikenfloat
voor het SQL-typeDOUBLE
public class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); } protected void registerNumericTypeMappings() { super.registerNumericTypeMappings(); registerColumnType( Types.DOUBLE, "float" ); } }
De laatste optie lijkt veilig, maar vereist wat testen om te zien of het geen regressie introduceert. Ik heb niet naar de JDBC-stuurprogrammacode van Oracle gekeken, dus ik kan niet zeggen hoe float
en double precision
verschillen op bestuurdersniveau.