CreateArray因不支持的功能而失败:ule子中的createArrayof

问题描述

dbCreateArray函数在将Oracle DB与c3p0连接池一起使用时出现错误错误java.sql.sqlException:不支持功能我正在使用以下方法

#[dbCreateArray(oracle_Configurtion,<USER_DEFINED_DATA_TYPE_NAME_AS_IN_ORACLE>,Object[])]

我正在使用Mule EE 3.9,oracle 12.2.0和c3p0 0.9.5.2

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
<property name="driverClass" value = "oracle.jdbc.pool.OracleDataSource" /> 
<property name="jdbcUrl" value = "${db.url}" /> 
<property name="user" value = "${db.username}" /> 
<property name="password" value = "${db.password}" /> 
<property name="initialPoolSize" value = "${pool.initialSize}" /> 
</bean> 

我看过这个博客,他建议改用oracle ucp池,但是在使用c3p0池时有什么方法可以解决此问题。

https://help.mulesoft.com/s/article/dbCreateArray-function-failing-with-DB-connection-pooling

解决方法

Oracle does not support the JDBC4-standard createArrayOf method

相反,您必须call a proprietary createARRAY method

如果您直接编写代码,则将c3p0 unwrap Connection传递给基础Oracle Connection并调用专有方法没问题。但是,您似乎正在使用一种高级语言,该语言可能已翻译为标准JDBC方法。除非您完全了解转换的完成方式,否则要使此更高级别的语言调用起作用可能并不容易。

看起来Oracle自己的UCP内置了Oracle特定的解决方法,但是c3p0不包括这样的解决方法,可惜。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...