sql >> Databáze >  >> RDS >> Oracle

Načítání XMLType oracle uloženého jako binární XML ze sady výsledků v Javě

Nalezen úlovek a nesouvisí s kódem.

Správný nullSafeGet v Hibernate UserType, jak je uvedeno v odkazované odpovědi, je:

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);
    }
}

PROBLÉM: při použití sloupce SECUREFILE BINARY XML (nikoli CLOB) musíte použít nejnovější (11.2.0.2+) distribuci xdb*.jar, což je v tomto případě xdb6.jar (~257 kb). Starší xdb*.jar (~136 kb pro 10.x) bude stále fungovat, bez vyhazování jakýchkoli výjimek, i když nesprávně dekódujete BINARY XML.

TL;DR :Stáhněte si xdb6.jar (~257 kb) z Stránka ovladačů Oracle 11gR2 (11.2.0.3) JDBC . Starší nádoby xdb tiše selžou a budete z nich smutní.




  1. Syntaxe SQL DROP DATABASE – Zobrazeno podle DBMS

  2. Jak stránkovat výsledky dotazu pro Infinite Scroll?

  3. Funkce oken a další místní agregace

  4. Jak dynamicky vybírat názvy sloupců v mySQL