【问题标题】:Getting internal Oracle connection from Hibernate in JBoss在 JBoss 中从 Hibernate 获取内部 Oracle 连接
【发布时间】:2018-10-21 22:23:59
【问题描述】:

我需要通过 Hibernate 设置应用程序上下文。我发现oracle.jdbc.internal.OracleConnection 上有一个方法setApplicationContext。我编写了一个测试,在其中我从 Hibernate 会话中获取了 Oracle 连接,它运行良好。但是,当我将代码移动到在 JBoss 下运行的应用程序中,从池中获取连接时,该解决方案将不起作用。错误是:

$Proxy51 无法转换为 oracle.jdbc.internal.OracleConnection。

  1. 如何在那种环境下获得内部连接?
  2. 有没有更好的方法通过 Hibernate 设置应用程序上下文(文档没有说明)。

【问题讨论】:

    标签: oracle hibernate connection


    【解决方案1】:

    你是对的,休眠给你的是代理连接,而不是实际的连接。因此,如果您尝试在代理连接上设置应用程序上下文,那么它将给您类案例异常。但是你可以使用下面的 sn-p 来达到同样的效果。

            oracle.jdbc.driver.OracleConnection nativeOraConn = null;
            oracle.jdbc.OracleConnection connection = null;
            try {
                java.sql.Connection connect = org.hibernate.jdbc.BorrowedConnectionProxy.getWrappedConnection(conn);
                connection = (oracle.jdbc.OracleConnection)connect;
                connection = connection.physicalConnectionWithin();
                nativeOraConn=  (oracle.jdbc.driver.OracleConnection)connection;
                nativeOraConn.setApplicationContext("context", "context", valueToSet);
            } catch (Exception e) {
               e.printStackTrace();
            }
    

    我认为这应该可行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      相关资源
      最近更新 更多