2015-01-12 4 views
3

Я хочу, чтобы использовать Postgres CopyManager нравится:Как подключить Jdbc4Connection к PGConnection?

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

Тогда у вас есть не PGConnection. –

+0

Источник данных не передает реальное соединение, а только прокси. Проверьте метод getPhysicalConnection() 'или что-то подобное в пуле соединений –

+0

@ ThorbjørnRavnAndersen да, но я получаю ту же ошибку при передаче в другое соединение. – membersound

ответ

7

Если вы используете javax.sql.DataSource, то здесь решение:

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

Надеется, что это помогает.

Смежные вопросы