我有一个 Java 应用程序,我在其中调用 Oracle 过程并将 Oracle 数组作为参数传递。我的申请是 EAR。
在 Java 7 和 Jboss 7 上一切正常,但是当我们升级到 Java 8 和 Wildfly 10 时,我们得到了这个错误:
java.lang.ClassCastException:
org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7 cannot be cast
to org.jboss.jca.adapters.jdbc.WrappedConnection
经过一番研究,我将代码更改为:
WrappedConnectionJDK7 wc = (WrappedConnectionJDK7 ) conn;
OracleConnection oraconn = (OracleConnection) wc.getUnderlyingConnection();
并且我在 pom.xml 中添加了依赖
<dependency>
<groupId>org.jboss.ironjacamar</groupId>
<artifactId>ironjacamar-jdbc</artifactId>
<version>1.3.2.Final</version>
</dependency>
但我仍然得到这个错误:
java.lang.ClassCastException:
org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7 cannot be cast to
org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7
最佳答案
我之前不得不解开类似的连接(但不完全相同的包装类)并使用过:
OracleConnection oconn;
if ( conn.isWrapperFor( OracleConnection.class ) )
{
oconn = (OracleConnection) conn.unwrap( OracleConnection.class );
}
else
{
throw new SQLException( "Not an Oracle Connection" );
}
关于java - 将 java.sql.Connection 转换为 Oracle Connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47308853/