Я использую Apache Commons DBCP (commons-dbcp.jar
) Пул соединений.
Как только я получил соединение из пула, он завернут в
class org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
.
Мое требование - передать массив строк в хранимую процедуру pl/sql в Oracle.
Вот что я делаю в следующем фрагменте кода:
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.jdbc.OracleConnection at oracle.sql.ArrayDescriptor.createDescriptor
Я попытался найти решение по этому поводу на всех сайтах и форумах, но не смог получить удовлетворенный ответ или решение на том же уровне.