sql >> データベース >  >> RDS >> Oracle

Javaの結果セットからバイナリXMLとして格納されているOracleXMLTypeを取得する

    キャッチが見つかりましたが、コードとは関係ありません。

    参照されている回答に記載されているように、HibernateUserTypeの適切な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)は、BINARY XMLを誤ってデコードした場合でも例外をスローすることなく、引き続き機能します。

    TL; DR xdb6.jar(〜257kb)をからダウンロードします。 Oracle 11gR2(11.2.0.3)JDBCドライバーページ 。古いxdbjarはサイレントに失敗し、悲しくなります。




    1. SQL Serverで複合主キーを作成する方法(T-SQLの例)

    2. 多くの接続エラーのため、ホスト'hostname'はブロックされています。 'mysqladminflush-hosts'でブロックを解除します

    3. JDBC仕様は「?」を防止しますか? (引用符の外で)演算子として使用されることから?

    4. selectのPostgreSQL正規表現キャプチャグループ