Oracle
 sql >> база данни >  >> RDS >> Oracle

Извличане на oracle XMLType, съхранен като двоичен XML от набор от резултати в Java

Намерих уловката и тя не е свързана с кода.

Правилният nullSafeGet в Hibernate UserType, както е отбелязано в посочения отговор, е:

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

ПРОБЛЕМ: когато използвате SECUREFILE BINARY XML колона (не CLOB), трябва да използвате най-новото (11.2.0.2+) разпространение на xdb*.jar, което в този случай е xdb6.jar (~257kb). По-ранният xdb*.jar (~136kb за 10.x) ще продължи да функционира, без да създава изключения дори при неправилно декодиране на BINARY XML.

TL;DR :Изтеглете xdb6.jar (~257kb) от Oracle 11gR2 (11.2.0.3) JDBC страница с драйвери . По-старите xdb буркани се повреждат тихо и ще ви натъжат.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да видя заявки, които се изпълняват срещу Oracle?

  2. Има ли някакъв начин да ускоря следното вмъкване(я)?

  3. Прогнозиране на растежа на таблицата на Oracle

  4. настройка на клиентска информация в JDBC за Oracle

  5. Използване на имена на услуги на Oracle с SQLAlchemy