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
floatbukannyadoubledi 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.Oracle10gDialectuntuk membuatnya gunakanfloatuntuk tipe SQLDOUBLEpublic 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.