问题描述
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
不包括这样的解决方法,可惜。