sql >> Database teknologi >  >> RDS >> Oracle

Hvad er de bedste løsninger på kendte problemer med Hibernates skemavalidering af kolonner med flydende komma, når du bruger Oracle 10g?

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 en double 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 bruge float for SQL-typen DOUBLE

    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.



  1. Opdater tabel med tilfældig post i opdateringserklæring i SQL Server?

  2. Kan vi sende parametre til en visning i SQL?

  3. MySQL-forbindelse tegnsæt problemer

  4. Hvorfor kan jeg oprette forbindelse til MySQL gennem shell, men kan ikke gøre det gennem Python?