【问题标题】:How to cast from org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 to oracle.jdbc.OracleConnection in java 1.8如何在 java 1.8 中从 org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 转换为 oracle.jdbc.OracleConnection
【发布时间】:2019-07-06 05:51:20
【问题描述】:

如何在 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);

【问题讨论】:

    标签: java oracle jdbc


    【解决方案1】:

    很遗憾,您不能在 WrappedConnectionJDK8 上使用 Connection.unwrap()。您必须改为致电WrappedConnection.getUnderlyingConnection()。另见this question。在你的情况下:

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

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

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

    我知道...

    【讨论】:

    • WrappedConnectionJDK8 我无法导入,为此我需要包含哪个 jar。
    • @user3292629:我不知道你的项目设置。当然,您可以询问团队中的某个人如何访问该课程。否则,总是可以选择使用反射。我已经更新了我的答案。
    • @ Lukas Eder:我添加了相应的 jar,但之后出现以下错误。 java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 无法转换为 org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8
    • jar-download.com/artifacts/org.jboss.ironjacamar/…。这是我正在使用的罐子。 @卢卡斯埃德
    • 我创建了一个新问题stackoverflow.com/questions/54684109/…@Luke Eder
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 2021-01-12
    相关资源
    最近更新 更多