Đã tìm thấy bắt và nó không liên quan đến mã.
NullSafeGet thích hợp trong Kiểu người dùng Hibernate, như được lưu ý trong câu trả lời được tham chiếu là:
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);
}
}
VẤN ĐỀ: khi sử dụng cột XML SECUREFILE BINARY (không phải CLOB), bạn phải sử dụng bản phân phối mới nhất (11.2.0.2+) của xdb * .jar, trong trường hợp này là xdb6.jar (~ 257kb). Xdb * .jar trước đó (~ 136kb cho 10.x) sẽ vẫn hoạt động mà không đưa ra bất kỳ ngoại lệ nào ngay cả khi giải mã sai BINARY XML.
TL; DR : Tải xuống xdb6.jar (~ 257kb) từ Trang trình điều khiển JDBC của Oracle 11gR2 (11.2.0.3) . Các lọ xdb cũ hơn bị lỗi một cách âm thầm và sẽ khiến bạn buồn.