Java &引用;SQLException:展开错误";使用JDBI和PGJDBC-NG Postgres驱动程序

Java &引用;SQLException:展开错误";使用JDBI和PGJDBC-NG Postgres驱动程序,java,postgresql,jdbc,jdbi,pgjdbc-ng,Java,Postgresql,Jdbc,Jdbi,Pgjdbc Ng,我正在使用JDBI连接到我的Postgres数据库。这一直运作良好。今天我决定尝试用驱动程序替换本地Postgres驱动程序。在我尝试第一个简单的查询之前,一切都很好: jdbi.useExtension(FooDao.class, dao -> { dao.insert(e); }); 不幸的是,这导致: org.jdbi.v3.core.ConnectionException:java.sql.SQLException:展开错误 调试到应用程序中我发现异常发生在JDBI的Po

我正在使用JDBI连接到我的Postgres数据库。这一直运作良好。今天我决定尝试用驱动程序替换本地Postgres驱动程序。在我尝试第一个简单的查询之前,一切都很好:

jdbi.useExtension(FooDao.class, dao -> {
    dao.insert(e);
});
不幸的是,这导致:

org.jdbi.v3.core.ConnectionException:java.sql.SQLException:展开错误

调试到应用程序中我发现异常发生在JDBI的
PostgresPlugin
类的
customizeHandle
方法中:

@Override
public Handle customizeHandle(Handle handle) {
    PGConnection pgConnection = Unchecked.supplier(() -> handle.getConnection().unwrap(PGConnection.class)).get();
    return handle.configure(PostgresTypes.class, pt -> pt.addTypesToConnection(pgConnection));
}
异常在
unwrap
方法的第一行抛出。问题似乎在于,对于新的驱动程序,
getConnection
返回的实例是不可从
PGConnection
分配的,正如unwrap方法调用指定的那样

这有什么办法吗?我想我可以扩展
PostgresPlugin
并覆盖
customizeHandle
的实现,以便使用
PGDirectConnection
打开包,但如果可能的话,我宁愿不这样做


Edit:呃,无法覆盖
customizeHandle
,因为
postgrespes.addTypesToConnection
不是公共的。

PostgresPlugin
JDBI直接查询
PGConnection
;这是一个仅在标准驱动程序中可用的类。因此,在它被改变为与NG一起工作之前,它不会

虽然,根据文件

该插件为Java 8 Java.time类型配置映射,如Instant或Duration、InetAddress、UUID、类型化枚举和hstore

但是这些都不是必需的,因为
PGJDBC-NG
本机支持所有这些类型

解决方案 不要使用
PostgresPlugin