Saya mengalami masalah yang sama seperti Anda dalam mencoba memetakan menggunakan tipe "gumpalan". Berikut ini tautan ke posting yang saya buat di situs hibernate:https://forum.hibernate.org/viewtopic.php?p=2452481#p2452481
Hibernasi 3.6.9
Driver Oracle 11.2.0.2.0
Database Oracle 11.2.0.2.0
Untuk memperbaiki masalah saya menggunakan kode yang memiliki UserType khusus untuk Blob, saya memiliki tipe pengembalian menjadi java.sql.Blob.
Berikut adalah implementasi metode utama dari UserType ini:
public Object nullSafeGet(ResultSet rs, String[] names, Object owner) throws HibernateException, SQLException {
Blob blob = rs.getBlob(names[0]);
if (blob == null)
return null;
return blob;
}
public void nullSafeSet(PreparedStatement st, Object value, int index)
throws HibernateException, SQLException {
if (value == null) {
st.setNull(index, sqlTypes()[0]);
}
else {
InputStream in = null;
OutputStream out = null;
// oracle.sql.BLOB
BLOB tempBlob = BLOB.createTemporary(st.getConnection(), true, BLOB.DURATION_SESSION);
tempBlob.open(BLOB.MODE_READWRITE);
out = tempBlob.getBinaryOutputStream();
Blob valueAsBlob = (Blob) value;
in = valueAsBlob.getBinaryStream();
StreamUtil.toOutput(in, out);
out.flush();
StreamUtil.close(out);
tempBlob.close();
st.setBlob(index, tempBlob);
StreamUtil.close(in);
}
}