0

我试图沮丧java.sql.Connectionorg.postgresql.jdbc4.Jdbc4Connection喜欢这样:

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

如您所见,Netbeans 告诉我localConnis ($Proxy6) org.postgresql.jdbc4.Jdbc4Connection@5894585b,它不是org.postgresql.jdbc4.Jdbc4Connection.

所以这是我的问题:

  1. 是什么($Proxy6) org.postgresql.jdbc4.Jdbc4Connection@5894585b意思?
  2. 我怎样才能从中得到org.postgresql.jdbc4.Jdbc4Connection

谢谢,

更新资料:

localConn instanceof org.postgresql.jdbc4.Jdbc4Connection返回false

更新 我使用Mybatis。

4

2 回答 2

1

我想你正在使用 iBatis/MyBatis。如果是这样,则有一个静态方法com.ibatis.common.jdbc.SimpleDataSource可以返回未包装的连接:

public static Connection unwrapConnection(Connection conn)

此方法将返回没有代理的真实连接,您可以进行向下转换。

于 2013-06-06T01:55:27.570 回答
0

代理类是包装现有接口并允许您拦截对该对象的调用的类。

这会导致一个问题,即代理只能识别它属于该接口类型。在这种情况下,最有可能是 javax.sql.Connection。

你可以试试这个

 Connection conn = localConn.createStatement().getConnection();
于 2013-06-06T01:01:35.117 回答