Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Mengambil Oracle XMLType yang disimpan sebagai XML biner dari hasil di Java

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mengekspor objek db untuk kontrol versi

  2. Tidak dapat membuat Sumber Data Eclipse ke Oracle 12c menggunakan toples 12c. Namun 11g berfungsi

  3. Membuat Pemicu yang berjalan di dua tabel

  4. Disebabkan oleh:java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver

  5. Entity Framework Core - Take(1), Single(), First()... Tidak Bekerja dengan Penyedia Oracle (ORA-00933:Perintah SQL tidak diakhiri dengan benar)