我正在尝试将java.sql.Connection
转发给org.postgresql.jdbc4.Jdbc4Connection
,如下所示:
正如您所看到的,Netbeans告诉我localConn
是($Proxy6) org.postgresql.jdbc4.Jdbc4Connection@5894585b
,而不是是org.postgresql.jdbc4.Jdbc4Connection
的实例。
所以这是我的问题:
($Proxy6) org.postgresql.jdbc4.Jdbc4Connection@5894585b
是什么意思?org.postgresql.jdbc4.Jdbc4Connection
?谢谢,
更新信息:
localConn instanceof org.postgresql.jdbc4.Jdbc4Connection
返回 false 。
更新 我使用Mybatis。
答案 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();