2013-06-06 1 views
0

Я пытаюсь java.sql.Connection на обратное приведение org.postgresql.jdbc4.Jdbc4Connection как это:

($Proxy6) org.postgresql.jdbc4.Jdbc4Connection@5894585b

Как вы можете видеть, Netbeans говорит мне localConn является ($Proxy6) [email protected], и это не экземпляр org.postgresql.jdbc4.Jdbc4Connection.

Так вот мои вопросы:

  1. Что ($Proxy6) [email protected] значит?
  2. Как я могу получить org.postgresql.jdbc4.Jdbc4Connection?

Спасибо,

обновление информации:

localConn instanceof org.postgresql.jdbc4.Jdbc4Connection возвращает ложь.

обновление Я использую Mybatis.

ответ

1

Я полагаю, что вы используете Ibatis/MyBatis. Если да, то есть статический метод на com.ibatis.common.jdbc.SimpleDataSource, который возвращает развернутое соединение:

public static Connection unwrapConnection(Connection conn) 

Этот метод возвращает реальное соединение без прокси-сервера, и вы можете сделать подавленное.

+1

Большое спасибо. Это ответ. Кстати, вам нужно обновить его до версии 3.2.0 из-за этой ошибки: https://code.google.com/p/mybatis/issues/detail?id=591#c1 – Xin

0

Класс прокси - класс, который обертывает существующий интерфейс и позволяет перехватывать вызовы , сделанные для объекта.

Это вызывает проблему в том, что прокси-сервер распознает только тот интерфейс . В этом случае, скорее всего, будет javax.sql.Connection.

вы могли бы попробовать это

Connection conn = localConn.createStatement().getConnection(); 
+0

Это проветривается, потому что в этом случае это не позволяет мне угасать. Есть идеи? – Xin

+1

@DenLi Извините, прокси обертывает интерфейс и только распознает это, а не реализующий объект. Вы можете попробовать создать заявление и подключиться к нему. – BevynQ