sql >> Databáze >  >> RDS >> Oracle

Jaká jsou nejlepší řešení pro známé problémy s ověřováním schématu Hibernate pro sloupce s plovoucí desetinnou čárkou při použití Oracle 10g?

Toto je známé omezení validátoru schématu, zkontrolujte HHH-2315 . Takže zde máte tři možnosti (ve skutečnosti čtyři, ale myslím, že deaktivace ověření není žádoucí). Buď:

  • Použijte float místo double na úrovni Java – to však nemusí být možnost.

  • Oprava org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo) přidat speciální podmínku pro tento konkrétní případ – toto není opravdu lehká možnost.

  • Rozšiřuje org.hibernate.dialect.Oracle10gDialect aby používal float pro typ SQL DOUBLE

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

Pozdější možnost se zdá být bezpečná, ale bude vyžadovat určité testování, aby se zjistilo, zda nezavádí žádnou regresi. Nedíval jsem se na kód ovladače JDBC společnosti Oracle, takže nemohu říci, jak float a double precision se liší na úrovni řidiče.



  1. MySQL vybere všechny položky mezi dvěma daty bez ohledu na rok

  2. Spring JPA + dynamicky přepínat zdroj dat mezi schématy v postgresql

  3. jak najít potřebné hodnoty jedinečné proměnné ze dvou tabulek

  4. Zobrazit obrázek ve Wordpressu s kódem PHP