Получение внутреннего соединения Oracle из Hibernate в JBoss - PullRequest
0 голосов
/ 06 мая 2010

Мне нужно установить контекст приложения через Hibernate. Я обнаружил, что есть метод setApplicationContext на oracle.jdbc.internal.OracleConnection. Я написал тест, в котором я получал соединение с Oracle из сеанса Hibernate, и оно работало нормально. Однако, когда я переместил код в свое приложение, работающее под JBoss, где соединения получены из пула, решение не сработало. Ошибка:

$ Proxy51 нельзя преобразовать в oracle.jdbc.internal.OracleConnection.

  1. Как я могу получить внутреннее соединение в этой среде?
  2. Есть ли лучший способ установить контекст приложения через Hibernate (документы ничего не говорят об этом).

1 Ответ

1 голос
/ 20 мая 2010

Право спящий режим дает вам соединение с прокси, а не фактическое соединение. так что если вы попытаетесь установить контекст приложения при подключении к прокси, то это выдаст исключение для класса. однако вы можете использовать следующий фрагмент кода для достижения того же.

        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();
        }

Я думаю, что это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...