Java PooligDataSource-如何使用特定于驱动程序的PreparedStatement实现

Java PooligDataSource-如何使用特定于驱动程序的PreparedStatement实现,java,jdbc,apache-commons-dbcp,Java,Jdbc,Apache Commons Dbcp,我已经实现了PoolgDataSource并且它工作得很好——直到我遇到了使用java.sql.PreparedStatement接口的具体实现的问题 ((OraclePreparedStatement) getStatement()).registerReturnParameter(index, sqlType); java.lang.ClassCastException: org.apache.commons.dbcp.DelegatingPreparedStatement cann

我已经实现了
PoolgDataSource
并且它工作得很好——直到我遇到了使用
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


此外,PoolgDataSource正在包装一个OracleXADataSource,这让我相信它在某种程度上是有可能做到这一点的。

DelegatingPreparedStatement的名称意味着它只是委托给原始语句。因此,您调用
delegatingpreparedstatement.getDelegate()
,它将返回
OraclePreparedStatement


但事实上,请不要这样做。

感谢并抱歉违反了这一条的规定:/