Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jakie są najlepsze rozwiązania znanych problemów z walidacją schematu Hibernate dla kolumn zmiennoprzecinkowych podczas korzystania z Oracle 10g?

To jest znane ograniczenie walidatora schematu, sprawdź HHH-2315 . Masz tutaj trzy opcje (właściwie cztery, ale myślę, że dezaktywacja walidacji nie jest pożądana). Albo:

  • Użyj float zamiast double na poziomie Java - może to jednak nie być opcją.

  • Łata org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo) aby dodać specjalny warunek dla tego konkretnego przypadku - to naprawdę nie jest lekka opcja.

  • Rozszerza org.hibernate.dialect.Oracle10gDialect aby używał float dla typu SQL DOUBLE

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

Późniejsza opcja wydaje się bezpieczna, ale będzie wymagała pewnych testów, aby sprawdzić, czy nie wprowadza żadnej regresji. Nie patrzyłem na kod sterownika Oracle JDBC, więc nie mogę powiedzieć, jak float i double precision różnią się na poziomie kierowcy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ponownie wykorzystać przerwy w sekwencji Oracle w kolumnie klucza podstawowego?

  2. SSIS konwertuje Varchar2 na DT_STR

  3. Wybierz max(data) nie działa, jeśli wiersze mają różne wartości, chcę tylko pobrać wiersz z najwyższą datą

  4. Oracle SQL do ciągłego grupowania

  5. Sekwencja partycjonowana Oracle