2017-01-27 15 views
0

私は、このデータソースは、Oracle DBにCLOB値を書き込んでいる基盤接続にアクセスする方法を教えてください。

<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> 

私baseContext.xmlでデータソースを定義しています。そうしながら、そしてそれは、このエラーをスローします

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」が真けどそれは、豆をインスタンス化することはできませんが、プロパティは存在しません。

他のソリューションlike thisはネイティブJDBC抽出を使用するように求められますが、私はこのBean

に私はTomcat上で実行されている春のバッチを使用していると私はJobRepository

を設定するとき、私はちょうどこのデータソースを指定することを指定する方法を知りません
<batch:job-repository data-source="datasource" id="jobrepo" transaction-manager="transacMnager" table-prefix="" isolation-level-for-create="READ_COMMITTED"></batch:job-repository> 

どうすればこの問題を解決できますか?

+0

に役立ちます願っています

<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> 

は、あなたがこの方法を使用してみました.apache.org/proper/commons-dbcp/api-1.4/org/apache/commons/dbcp/BasicDataSource.html#getConnection()? –

+0

私はSpringバッチを使用しています。私はJobRepositoryを指定するとこのデータソースを指しています。基本的には、明示的に接続を取得すると対応するJavaコードがありません。だから私がやる必要のある設定は、ここでは、データソースBeanを指定しているところです –

答えて

1

ます。たとえばjobRepository にlobHandlerを設定することができます。https://コモンズ、私はそれがアンジェロ

+0

データソースを定義するときにtrueを "allowAccessToUnderlyingConnection"に設定しなければなりませんでした。助けてくれてありがとう :) –

関連する問題