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

时间:2019-02-12 14:39:02

标签: 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);

1 个答案:

答案 0 :(得分:3)

很遗憾,您不能在Connection.unwrap()上使用WrappedConnectionJDK8。您必须改为致电WrappedConnection.getUnderlyingConnection()。另请参见this question。就您而言:

OracleConnection oracleConnection = (OracleConnection) 
    ((WrappedConnectionJDK8) conn).getUnderlyingConnection();

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

OracleConnection oracleConnection = (OracleConnection) 
    conn.getClass().getMethod("getUnderlyingConnection").invoke(conn);

我知道...