我正在使用 Apache Commons DBCP ( commons-dbcp.jar
) 连接池。
一旦我从池中获得连接,它就会被包装在类中org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
。
我的要求是将字符串数组传递给 Oracle 中的 pl/sql 存储过程。
这是我在以下代码片段中所做的事情:
Connection dbConn = ConnectionManager.ds.getConnection();
//The above statement returns me an connection wrapped in the class
//org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.
org.apache.commons.dbcp.DelegatingConnection del = new org.apache.commons.dbcp.DelegatingConnection(dbConn.getConnection());
con = del.getInnermostDelegate();
cs = con.prepareCall("call SP_NAME(?,?,?,?)");
oracle.sql.ArrayDescriptor arDesc= oracle.sql.ArrayDescriptor.createDescriptor("ARRAY_NAME", (OracleConnection) con);
CallableStatement c_stmt = conn.prepareCall("begin update_message_ids_ota
(:x); end;" );
c_stmt.setArray( 1, array_to_pass );
c_stmt.execute();
在执行上述代码时,我得到以下异常:
java.lang.ClassCastException:org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper 无法在 oracle.sql.ArrayDescriptor.createDescriptor 中转换为 oracle.jdbc.OracleConnection
我试图在几乎所有的网站和论坛中找到解决方案,但无法得到满意的答案或解决方案。