2013-06-06 52 views
0

我想垂頭喪氣java.sql.Connectionorg.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