Detta är en känd begränsning i schemavalideraren, kontrollera HHH-2315 . Så du har tre alternativ här (faktiskt fyra men jag antar att det inte är önskvärt att inaktivera validering). Antingen:
-
Använd en
float
istället för endouble
på Java-nivå - detta kanske inte är ett alternativ dock. -
Patch
org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo)
att lägga till ett speciellt villkor för det här specifika fallet - det här är egentligen inte ett lätt alternativ. -
Utökar
org.hibernate.dialect.Oracle10gDialect
för att få det att användafloat
för SQL-typenDOUBLE
public class MyOracle10gDialect extends Oracle10gDialect { public MyOracle10gDialect() { super(); } protected void registerNumericTypeMappings() { super.registerNumericTypeMappings(); registerColumnType( Types.DOUBLE, "float" ); } }
Det senare alternativet verkar säkert men kommer att kräva en del testning för att se om det inte introducerar någon regression. Jag tittade inte på Oracles JDBC-drivrutinskod, så jag kan inte säga hur float
och double precision
skiljer sig på förarnivå.