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

Quali sono le migliori soluzioni alternative per problemi noti con la convalida dello schema di Hibernate delle colonne a virgola mobile quando si utilizza Oracle 10g?

Questa è una limite noto del validatore dello schema, controlla HHH-2315 . Quindi hai tre opzioni qui (in realtà quattro ma immagino che la disattivazione della convalida non sia desiderata). O:

  • Usa un float invece di un double a livello di Java, tuttavia questa potrebbe non essere un'opzione.

  • Patch org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo) per aggiungere una condizione speciale per questo caso particolare:questa non è davvero un'opzione leggera.

  • Estende org.hibernate.dialect.Oracle10gDialect per farlo usare float per il tipo SQL DOUBLE

    public class MyOracle10gDialect extends Oracle10gDialect {
        public MyOracle10gDialect() {
            super();
        }
        protected void registerNumericTypeMappings() {
            super.registerNumericTypeMappings();
            registerColumnType( Types.DOUBLE, "float" );
        }
    }
    

L'ultima opzione sembra sicura ma richiederà alcuni test per vedere se non introduce alcuna regressione. Non ho esaminato il codice del driver JDBC di Oracle, quindi non posso dire come float e double precision differiscono a livello di conducente.