如何将Jdbc4Connection转换为PGConnection?

mem*_*und 7 java postgresql spring spring-boot

我想利用postgres,CopyManager如:

CopyManager cp = ((PGConnection) dataSource.getConnection()).getCopyAPI();
Run Code Online (Sandbox Code Playgroud)

正如我所使用的那样spring-boot,数据源是a org.apache.tomcat.jdbc.pool.DataSource,因此是连接a Jdbc4Connection.

问题:转换会抛出以下错误:

java.lang.ClassCastException: com.sun.proxy.$Proxy55 cannot be cast to org.postgresql.PGConnection
Run Code Online (Sandbox Code Playgroud)

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

java.lang.ClassCastException: com.sun.proxy.$Proxy55 cannot be cast to org.postgresql.jdbc4.Jdbc4Connection
Run Code Online (Sandbox Code Playgroud)

我能做什么?

小智 12

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

if (dataSource.getConnection().isWrapperFor(PGConnection.class)) {
  PGConnection pgConnection = dataSource.getConnection().unwrap(PGConnection.class);
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.