0

私はコモンズdbcp を実装し、その完全に機能しました-インターフェイスPoolingDataSourceの特定の実装を使用する問題に遭遇するまで。java.sql.PreparedStatement

((OraclePreparedStatement) getStatement()).registerReturnParameter(index, sqlType); 

java.lang.ClassCastException: 
org.apache.commons.dbcp.DelegatingPreparedStatement 
cannot be cast to oracle.jdbc.OraclePreparedStatemen

なぜこれが起こっているのか理解しています。 PreparedStatementのベンダー固有の実装を使用する方法はありますが、Commons DBCPによって提供される接続プールを使用することはできますか? Oracleの実装に固有のregisterReturnParameter()とgetReturnResultSet()を使用したいと思います。私は基本的なルール#1に違反したことを知っています...

また、PoolingDataSourceはOracleXADataSourceをラップしているため、これを行うことがどういうわけか可能であると私は信じています...

4

1 に答える 1

2

の名前は、DelegatingPreparedStatement単に元のステートメントに委任することを意味します。したがって、これを呼び出すdelecatingPrepartedStatement.getDelegate()と、が返されOraclePreparedStatementます。

しかし、実際には、これを行わないようにしてください。

于 2011-10-06T20:56:26.677 に答える