spring批处理oracle CLOB问题

时间:2015-08-18 18:10:50

标签: spring-batch apache-commons-dbcp

我们正在使用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

1 个答案:

答案 0 :(得分: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>