【问题标题】:spring batch oracle CLOB issue春季批处理oracle CLOB问题
【发布时间】:2015-11-11 19:42:34
【问题描述】:

我们正在使用 Spring Batch,它会在其某些表中插入一些数据作为 CLOB 对象。我们有 oracle db 并使用 apache commons dbcp 连接池。但是当我们运行我们的工作时,它会抛出如下异常。这个问题的根本原因是什么?是 apache commons 连接池的问题吗?

Caused by: java.lang.ClassCastException: org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper cannot be cast to oracle.jdbc.OracleConnection
at oracle.sql.CLOB.createTemporary(CLOB.java:979)
at oracle.sql.CLOB.createTemporary(CLOB.java:939)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.prepareLob(OracleLobHandler.java:580)
at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.createLob(OracleLobHandler.java:527)
... 66 more

【问题讨论】:

  • 这篇文章可能对你有所帮助community.oracle.com/thread/281238
  • 我确实查看了这篇文章,但问题是我不想更改使用 apache commons dbcp 在 spring 批处理表中插入数据的 spring batch 框架库。

标签: spring-batch apache-commons-dbcp


【解决方案1】:

我有类似的问题。配置 LOB 处理程序解决了我的问题。请在下面找到代码

<batch:job-repository data-source="dataSource" id="jobRepository"
    isolation-level-for-create="READ_COMMITTED" transaction-manager="transactionManager"
    table-prefix="${batch.table.prefix}" lob-handler="lobHandler" />

 <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"/>

     <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">
        <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/>
    </bean>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2018-05-27
    • 2015-05-13
    • 2017-06-25
    • 2017-10-06
    • 2021-06-21
    • 1970-01-01
    相关资源
    最近更新 更多