Menemukan tangkapan, dan itu tidak terkait dengan kode.
nullSafeGet yang tepat di Hibernate UserType, sebagaimana dicatat dalam jawaban yang direferensikan adalah:
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);
}
}
MASALAH: saat menggunakan kolom SECUREFILE BINARY XML (bukan CLOB), Anda harus menggunakan distribusi xdb*.jar terbaru (11.2.0.2+), yang dalam hal ini adalah xdb6.jar (~257kb). Xdb*.jar sebelumnya (~136kb untuk 10.x) akan tetap berfungsi, tanpa membuang pengecualian apa pun bahkan ketika salah mendekode XML BINARY.
TL;DR :Unduh xdb6.jar (~257kb) dari Oracle 11gR2 (11.2.0.3) Halaman driver JDBC . Guci xdb yang lebih tua gagal secara diam-diam dan akan membuat Anda sedih.