如何在 java 1.8 中从 org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 转换为 oracle.jdbc.OracleConnection

use*_*629 2 java oracle jdbc

如何在 java 1.8 中从 org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 转换为 oracle.jdbc.OracleConnection。目前我正在这样使用并得到以下异常。

java.lang.ClassCastException:org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 无法转换为 oracle.jdbc.OracleConnection

session = getHibernateSession();
conn = getConnection(session);
conn.setAutoCommit(false);
oracleConnection = conn.unwrap(OracleConnection.class);
Run Code Online (Sandbox Code Playgroud)

Luk*_*der 5

非常不幸的是,您不能使用Connection.unwrap()on WrappedConnectionJDK8。你必须打电话WrappedConnection.getUnderlyingConnection()来代替。另请参阅这个问题。在你的情况下:

OracleConnection oracleConnection = (OracleConnection) 
    ((WrappedConnectionJDK8) conn).getUnderlyingConnection();
Run Code Online (Sandbox Code Playgroud)

或者,如果您无法访问该WrappedConnectionJDK8类型,只需使用反射:

OracleConnection oracleConnection = (OracleConnection) 
    conn.getClass().getMethod("getUnderlyingConnection").invoke(conn);
Run Code Online (Sandbox Code Playgroud)

我知道...