पकड़ मिली, और यह कोड से संबंधित नहीं है।
हाइबरनेट यूजर टाइप में उचित nullSafeGet, जैसा कि संदर्भित उत्तर में बताया गया है:
public void nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session) throws HibernateException, SQLException {
if (logger.isTraceEnabled()) {
logger.trace(" nullSafeSet: " + value + ", ps: " + st + ", index: " + index);
}
try {
XMLType xmlType = null;
if (value != null) {
xmlType = XMLType.createXML(getOracleConnection(st.getConnection()), (String)value);
}
st.setObject(index, xmlType);
} catch (Exception e) {
throw new SQLException("Could not convert String to XML for storage: " + (String)value);
}
}
समस्या: SECUREFILE BINARY XML कॉलम (CLOB नहीं) का उपयोग करते समय आपको xdb*.jar के नवीनतम (11.2.0.2+) वितरण का उपयोग करना चाहिए, जो इस मामले में xdb6.jar (~257kb) है। पहले वाला xdb*.jar (10.x के लिए ~136kb) अभी भी काम करेगा, बिना किसी अपवाद को उछाले, भले ही बाइनरी एक्सएमएल को गलत तरीके से डिकोड किया गया हो।
TL;DR :डाउनलोड xdb6.jar (~257kb) से Oracle 11gR2 (11.2.0.3) JDBC ड्राइवर पेज . पुराने xdb जार चुपचाप विफल हो जाते हैं और आपको दुखी कर देंगे।