Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Pobieranie Oracle XMLType przechowywanego jako binarny XML z wyników w Javie

Znalazłem haczyk i nie jest on powiązany z kodem.

Prawidłowy nullSafeGet w Hibernate UserType, jak wspomniano w przywołanej odpowiedzi, to:

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

PROBLEM: używając kolumny SECUREFILE BINARY XML (nie CLOB), należy użyć najnowszej (11.2.0.2+) dystrybucji pliku xdb*.jar, którym w tym przypadku jest xdb6.jar (~257kb). Wcześniejszy plik xdb*.jar (~136kb dla 10.x) będzie nadal działał, bez wyrzucania żadnych wyjątków, nawet jeśli niepoprawnie dekoduje binarny XML.

TL;DR :Pobierz xdb6.jar (~257kb) z Strona sterowników Oracle 11gR2 (11.2.0.3) JDBC . Starsze słoiki xdb zawodzą po cichu i sprawią, że będziesz smutny.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić rozmiar schematu Oracle za pomocą zapytania SQL?

  2. java.lang.ArithmeticException podczas próby uzyskania połączenia w Oracle 11.2.0.2.0 (wersja 64-bitowa)

  3. Baza danych:funkcje potokowe

  4. Oracle zamienia sekundy na godziny:minuty:sekundy

  5. Instalowanie RAC dla bazy danych z plikami danych