Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

जावा में परिणामसेट से बाइनरी एक्सएमएल के रूप में संग्रहीत ओरेकल एक्सएमएल टाइप को पुनर्प्राप्त करना

पकड़ मिली, और यह कोड से संबंधित नहीं है।

हाइबरनेट यूजर टाइप में उचित nullSafeGet, जैसा कि संदर्भित उत्तर में बताया गया है:

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 नहीं) का उपयोग करते समय आपको xdb*.jar के नवीनतम (11.2.0.2+) वितरण का उपयोग करना चाहिए, जो इस मामले में xdb6.jar (~257kb) है। पहले वाला xdb*.jar (10.x के लिए ~136kb) अभी भी काम करेगा, बिना किसी अपवाद को उछाले, भले ही बाइनरी एक्सएमएल को गलत तरीके से डिकोड किया गया हो।

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. एक pl/sql सरणी लाई जा रही है (आउट पैरामीटर के रूप में)

  2. 11g . में वृद्धिशील सांख्यिकी एकत्र करना

  3. चयन से Oracle अद्यतन - एक ही तालिका

  4. Oracle में संयोजित तार उत्पन्न करने का तेज़ तरीका

  5. यहां कॉलम की अनुमति नहीं है INSERT स्टेटमेंट में त्रुटि