我正在使用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();
Run Code Online (Sandbox Code Playgroud)
在执行上面的代码时,我得到以下异常:
java.lang.ClassCastException:org.apache.commons.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper无法在oracle.sql.ArrayDescriptor.createDescriptor中强制转换为oracle.jdbc.OracleConnection
我试图在几乎所有的网站和论坛中找到解决方案,但无法得到满意的答案或解决方案.