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
floatistället för endoublepå 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.Oracle10gDialectför att få det att användafloatför SQL-typenDOUBLEpublic 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å.