Я использую 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 в oracle.sql.ArrayDescriptor.createDescriptor
Я пытался найти решение по этому поводу почти на всех сайтах и форумах, но не смог получить удовлетворительного ответа или решения на том же самом.