Весенняя партия оракула CLOB выпуска
Мы используем подпружиненный пакет, который вставляет некоторые данные в качестве объекта CLOB в некоторые из своих таблиц. У нас есть oracle db и мы используем пул соединений apache commons dbcp. Но когда мы запускаем нашу работу, это вызывает исключение, как показано ниже. Какова основная причина этой проблемы? Проблема в пуле соединения общих Apache?
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 ответ
Решение
У меня была похожая проблема. Настройка обработчика больших объектов исправила мою проблему. Пожалуйста, найдите код ниже
<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>