Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apa solusi terbaik untuk masalah yang diketahui dengan validasi skema Hibernate untuk kolom floating point saat menggunakan Oracle 10g?

Ini adalah batasan yang diketahui dari validator skema, periksa HHH-2315 . Jadi Anda memiliki tiga opsi di sini (sebenarnya empat tetapi saya kira menonaktifkan validasi tidak diinginkan). Atau:

  • Gunakan float bukannya double di tingkat Java - ini mungkin bukan pilihan.

  • Tambal org.hibernate.mapping.Table.validateColumns(Dialect dialect, Mapping mapping, TableMetadata tableInfo) untuk menambahkan kondisi khusus untuk kasus khusus ini - ini bukan pilihan yang ringan.

  • Memperluas org.hibernate.dialect.Oracle10gDialect untuk membuatnya gunakan float untuk tipe SQL DOUBLE

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

Opsi selanjutnya tampaknya aman tetapi akan memerlukan beberapa pengujian untuk melihat apakah itu tidak menimbulkan regresi apa pun. Saya tidak melihat kode driver JDBC Oracle, jadi saya tidak bisa mengatakan bagaimana float dan double precision berbeda di tingkat pengemudi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-04084:tidak dapat mengubah nilai BARU untuk jenis pemicu ini

  2. Bagaimana cara mengekspor skema database di Oracle ke file dump

  3. Oracle pilih untuk perilaku pembaruan

  4. REGEXP_SUBSTR() Fungsi di Oracle

  5. Entity Framework terhubung ke Oracle:ODP untuk .NET tidak mendukung waktu