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
bukannyadouble
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 gunakanfloat
untuk tipe SQLDOUBLE
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.