【发布时间】:2017-06-12 19:49:16
【问题描述】:
我在我的 baseContext.xml 中定义了一个数据源
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="default" autowire="default" autowire-candidate="default">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
<property name="url" value=""></property>
<property name="username" value=""></property>
<property name="password" value=""></property>
<property name="testWhileIdle" value=""></property>
<property name="testOnBorrow" value="tue"></property>
<property name="validationQuery" value=""></property>
</bean>
此数据源正在将一个 clob 值写入 Oracle 数据库。这样做会引发此错误
org.springframework.dao.InvalidDataAccessApiUsageException: OracleLobCreator 需要在 [oracle.jdbc.OracleConnection] 上工作,而不是 在 [org.apache.commons.dbcp.PoolableConnection] 上:指定一个 对应的 NativeJdbcExtractor;嵌套异常是 java.lang.ClassCastException: org.apache.commons.dbcp.PoolableConnection 不能转换为 oracle.jdbc.OracleConnection
我尝试将此属性 "accessToUnderlyingConnectionAllowed" 设置为 true,但它说无法实例化 bean,属性不存在。
其他解决方案like this 要求使用本机 jdbc 提取器,但我不知道如何在此 bean 中指定它
我正在使用运行在 tomcat 上的 Spring Batch,我只是在配置 JobRepository 时指定此数据源
<batch:job-repository data-source="datasource" id="jobrepo" transaction-manager="transacMnager" table-prefix="" isolation-level-for-create="READ_COMMITTED"></batch:job-repository>
我该如何解决这个问题?
【问题讨论】:
-
我正在使用 Spring Batch,当我指定 JobRepository 时,我只是指向这个数据源,本质上,当我显式获取连接时,我没有相应的 java 代码,Spring Batch Framework 做到了。所以我需要做的任何配置都在这里,我指定数据源bean的地方
标签: java spring tomcat spring-batch