sql >> Database >  >> RDS >> Oracle

Het ophalen van oracle XMLType opgeslagen als binaire XML uit een resultatenset in Java

De vangst gevonden en het is niet gerelateerd aan de code.

De juiste nullSafeGet in het Hibernate UserType, zoals vermeld in het antwoord waarnaar wordt verwezen, is:

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

PROBLEEM: bij gebruik van een SECUREFILE BINARY XML-kolom (niet CLOB) moet u de meest recente (11.2.0.2+) distributie van xdb*.jar gebruiken, in dit geval xdb6.jar (~257kb). De eerdere xdb*.jar (~136kb voor 10.x) zal nog steeds functioneren, zonder uitzonderingen te maken, zelfs als BINARY XML onjuist gedecodeerd wordt.

TL;DR :Download xdb6.jar (~257kb) van de Oracle 11gR2 (11.2.0.3) JDBC-stuurprogrammapagina . Oudere xdb-potten falen stil en zullen je verdrietig maken.




  1. Mysql verbinden in twee tabellen

  2. Oracle - standaardwaarde van een kolom vergelijken

  3. SQL WHERE tekenreeks LIKE veld

  4. java.sql.SQLException:geen geschikte driver gevonden voor jdbc:sqlserver