Tôi đã gặp vấn đề tương tự như bạn khi cố gắng lập bản đồ bằng loại "blob". Đây là liên kết đến bài đăng tôi đã thực hiện trên trang web ngủ đông:https://forum.hibernate.org/viewtopic.php?p=2452481#p2452481
Hibernate 3.6.9
Oracle Driver 11.2.0.2.0
Cơ sở dữ liệu Oracle 11.2.0.2.0
Để khắc phục sự cố, tôi đã sử dụng mã có Kiểu người dùng tùy chỉnh cho Blob, tôi có kiểu trả về là java.sql.Blob.
Dưới đây là các triển khai phương pháp chính của UserType này:
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);
}
}