"ब्लॉब" प्रकार का उपयोग करके मानचित्र बनाने के प्रयास में मुझे वही समस्याएं आ रही थीं। मेरे द्वारा हाइबरनेट साइट पर की गई पोस्ट का लिंक यहां दिया गया है:https://forum.hibernate.org/viewtopic.php?p=2452481#p2452481
हाइबरनेट 3.6.9
Oracle ड्राइवर 11.2.0.2.0
Oracle डेटाबेस 11.2.0.2.0
समस्या को ठीक करने के लिए मैंने कोड का उपयोग किया जिसमें ब्लॉब के लिए एक कस्टम उपयोगकर्ता प्रकार था, मेरे पास वापसी प्रकार java.sql.Blob था।
इस UserType के प्रमुख विधि कार्यान्वयन यहां दिए गए हैं:
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);
}
}