如何将 Jdbc4Connection 转换为 PGConnection?
How to cast Jdbc4Connection to PGConnection?
我想像这样使用 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
我能做什么?
如果您使用的是 javax.sql.DataSource 那么这里有一个解决方案:
if (dataSource.getConnection().isWrapperFor(PGConnection.class)) {
PGConnection pgConnection = dataSource.getConnection().unwrap(PGConnection.class);
}
希望对您有所帮助。
我想像这样使用 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
我能做什么?
如果您使用的是 javax.sql.DataSource 那么这里有一个解决方案:
if (dataSource.getConnection().isWrapperFor(PGConnection.class)) {
PGConnection pgConnection = dataSource.getConnection().unwrap(PGConnection.class);
}
希望对您有所帮助。