gpt4 book ai didi

java - 如何允许访问底层连接?

转载 作者:行者123 更新时间:2023-11-28 22:50:24 25 4
gpt4 key购买 nike

我在 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 needs to work on [oracle.jdbc.OracleConnection], not on [org.apache.commons.dbcp.PoolableConnection]:specify a corresponding NativeJdbcExtractor; nested exception is java.lang.ClassCastException: org.apache.commons.dbcp.PoolableConnection cannot be cast to oracle.jdbc.OracleConnection

我试图将此属性 "accessToUnderlyingConnectionAllowed" 设置为 true 但它说无法实例化 bean,属性不存在。

其他解决方案 like this要求使用 native 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>

我该如何解决这个问题?

最佳答案

可以在jobRepository中设置lobHandler例如:

<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transacMnager" />
<property name="isolationLevelForCreate" value="READ_COMMITTED" />
<property name="lobHandler">
<bean class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor">
<bean class="yourCorrectJdbcExtractor" />
</property>
</bean>
</property>
</bean>

希望对你有用

安杰洛

关于java - 如何允许访问底层连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com