sql >> Databasteknik >  >> RDS >> Oracle

Vilka är de bästa lösningarna för kända problem med Hibernates schemavalidering av flyttalskolumner när du använder Oracle 10g?

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 en double 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ända float för SQL-typen DOUBLE

    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å.



  1. Beräkna noggrannheten för en datauppsättning

  2. hur tar du bort snedstrecket (\) i json-svaret med php?

  3. Hur man skapar en relation i MySQL Workbench

  4. MySQL:@variabel vs variabel. Vad är skillnaden?