createArrayOf() is a JDBC4 method. You have to use a driver that
supports JDBC4, and JDK 1.6 or higher, and (I think) DBCP 1.4.
Jeff Butler
On Mon, Jun 18, 2012 at 1:58 PM, Ana Buigues Grimalt
<
ana.buigu...@gmail.com> wrote:
> Hi,
>
> I'm trying to pass as a parameter to a stored procedure's date list. I made
> the TypeHandler to convert the date's list to an array of date's, but not
> working. Thought it was DBCP version 1.3, but not why. Does anyone have any
> idea?
>
> Oracle version: 11g
> Oracle driver version: 11.2.0.3
> Commons DBCP version: 1.3
>
> public class ListTypeHandler extends BaseTypeHandler<Object> {
>
> public ListTypeHandler() {
> super();
> }
>
> @Override
> public void setNonNullParameter(final PreparedStatement ps, final int i,
> final Object parameter, final JdbcType jdbcType)
> throws SQLException {
> @SuppressWarnings("unchecked")
> final List<Object> listaObjetos = (List<Object>) parameter;
> final Array psArray = ps.getConnection().createArrayOf(jdbcType.toString(),
> listaObjetos.toArray());
> ps.setArray(i, psArray);
>
> }
> }
>
> Exception:
> java.lang.AbstractMethodError:
> org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;
> at
> com.bancomer.seguros.servicing.core.commons.converters.impl.ListTypeHandler.setNonNullParameter(ListTypeHandler.java:24)
> at
> org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:46)
> at
> org.apache.ibatis.executor.parameter.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:91)
> at
> org.apache.ibatis.executor.statement.CallableStatementHandler.parameterize(CallableStatementHandler.java:86)
> at
> org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:58)
> at
> org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:71)
> at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:56)
> at
> org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
> at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:141)
> at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:98)
> at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:73)
> at
> org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:101)
> at
> org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:95)
> at
> org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:59)
> 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:616)
> at
> org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:355)
> at $Proxy11.selectOne(Unknown Source)
> at
> org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160)
> at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:95)
> at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:40)
> at $Proxy54.obtenerTarificacion(Unknown Source)
> at
> com.bancomer.seguros.servicing.salud.daos.impl.cotizacion.CotizacionesSeguroSaludDaoImpl.obtenerTarificacion(CotizacionesSeguroSaludDaoImpl.java:39)
> at
> com.bancomer.seguros.servicing.salud.services.impl.cotizacion.CotizacionesSeguroSaludServiceImpl.obtenerTarificacion(CotizacionesSeguroSaludServiceImpl.java:23)
> 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:616)
> at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
> at
> org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:124)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> at
> org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
> at
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
> at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
> at $Proxy58.obtenerTarificacion(Unknown Source)
> at
> com.bancomer.seguros.servicing.salud.services.impl.cotizacion.CotizacionesSeguroSaludServiceImplIntegrationTest.comprobarFuncionamientoDelServicioObtenerTarificacion(CotizacionesSeguroSaludServiceImplIntegrationTest.java:157)
> 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:616)
> at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
> at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
> at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
> at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
> at
> org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
> at
> org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
> at
> org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
> at
> org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
> at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> at
> org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
> at
> org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> at
> org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>
> Thanks a lot.
>
> Ana
>