($ Proxy6)org.postgresql.jdbc4.Jdbc4Connection@5894585b,这是什么意思?

时间:2013-06-06 00:54:32

标签: java postgresql jdbc casting mybatis

我正在尝试将java.sql.Connection转发给org.postgresql.jdbc4.Jdbc4Connection,如下所示:

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

正如您所看到的,Netbeans告诉我localConn($Proxy6) org.postgresql.jdbc4.Jdbc4Connection@5894585b,而不是org.postgresql.jdbc4.Jdbc4Connection的实例。

所以这是我的问题:

  1. ($Proxy6) org.postgresql.jdbc4.Jdbc4Connection@5894585b是什么意思?
  2. 如何从中获取org.postgresql.jdbc4.Jdbc4Connection
  3. 谢谢,

    更新信息:

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

    更新 我使用Mybatis。

2 个答案:

答案 0 :(得分:1)

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

public static Connection unwrapConnection(Connection conn)

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

答案 1 :(得分:0)

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

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

你可以试试这个

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