如何将Jdbc4Connection转换为PGConnection?

时间:2015-01-12 09:20:07

标签: java spring postgresql spring-boot

我想使用postgres CopyManager,如:

CopyManager cp = ((PGConnection) dataSource.getConnection()).getCopyAPI();

当我使用spring-boot时,数据源为org.apache.tomcat.jdbc.pool.DataSource,因此连接为Jdbc4Connection

问题:投射会抛出以下错误:

java.lang.ClassCastException: com.sun.proxy.$Proxy55 cannot be cast to org.postgresql.PGConnection

另外,当我尝试转换为Jdbc4Connection时,我得到了同样的错误!

java.lang.ClassCastException: com.sun.proxy.$Proxy55 cannot be cast to org.postgresql.jdbc4.Jdbc4Connection

我该怎么办?

1 个答案:

答案 0 :(得分:10)

如果您使用的是javax.sql.DataSource,那么这是一个解决方案:

if (dataSource.getConnection().isWrapperFor(PGConnection.class)) {
  PGConnection pgConnection = dataSource.getConnection().unwrap(PGConnection.class);
}

希望这有帮助。