Miałem te same problemy, co ty, próbując mapować za pomocą typu „blob”. Oto link do wpisu, który umieściłem na stronie hibernacji:https://forum.hibernate.org/viewtopic.php?p=2452481#p2452481
Hibernacja 3.6.9
Sterownik Oracle 11.2.0.2.0
Baza danych Oracle 11.2.0.2.0
Aby rozwiązać problem, użyłem kodu, który miał niestandardowy UserType dla obiektu Blob, miałem typ zwracany jako java.sql.Blob.
Oto najważniejsze implementacje metod tego typu użytkownika:
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);
}
}