Java 最新Postgres JDBC41无法与HikariCP和Hibernate一起使用:未实现isValid()

Java 最新Postgres JDBC41无法与HikariCP和Hibernate一起使用:未实现isValid(),java,hibernate,postgresql,jdbc,hikaricp,Java,Hibernate,Postgresql,Jdbc,Hikaricp,我想将我们的Javaservlet迁移到使用Hikari连接池而不是C3P0。 然而,我遇到了一个奇怪的错误-在Hibernate启动期间 servlet因以下原因崩溃: 方法org.postgresql.jdbc4.Jdbc4Connection.isValid(int)尚未实现。 这是一种奇怪的行为,因为我们使用的是最新的JDBC41 postgresql驱动程序,摘自pom.xml: <dependency> <groupId>org.postgresql&l

我想将我们的Javaservlet迁移到使用Hikari连接池而不是C3P0。 然而,我遇到了一个奇怪的错误-在Hibernate启动期间 servlet因以下原因崩溃:

方法org.postgresql.jdbc4.Jdbc4Connection.isValid(int)尚未实现。

这是一种奇怪的行为,因为我们使用的是最新的JDBC41 postgresql驱动程序,摘自pom.xml:

<dependency>
   <groupId>org.postgresql</groupId>
   <artifactId>postgresql</artifactId>
   <version>9.3-1102-jdbc41</version>
</dependency>

org.postgresql
对于JDBC驱动程序,
isValid()
方法应该已经在9.3-1102中正确实现了。我们使用C3P0版本的驱动程序,绝对没有问题

我们还尝试使用
pgsqlng
JDBC驱动程序,该驱动程序工作正常,但在处理PostGIS数据类型时出现了错误

我还尝试将Hikari配置中的
connectionTestQuery
设置为
SELECT 1
,以强制Hikari不使用
isValid()
,但这没有效果


有人遇到过这个问题或解决方法吗?

如果使用spring,请尝试以下方法:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
    <constructor-arg ref="hikariConfig" />
</bean>

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="poolName" value="springHikariCP" />
    <property name="dataSourceClassName" value="org.postgresql.ds.PGSimpleDataSource" />
    <property name="maximumPoolSize" value="30" />
    <property name="connectionTestQuery" value="select 1"/>
    <property name="dataSourceProperties">
        <props>
            <prop key="serverName">${jdbc.serverName}</prop>
            <prop key="portNumber">${jdbc.portNumber}</prop>
            <prop key="databaseName">${jdbc.databaseName}</prop>
            <prop key="user">${jdbc.user}</prop>
            <prop key="password">${jdbc.password}</prop>
        </props>
    </property>
</bean>

${jdbc.serverName}
${jdbc.portNumber}
${jdbc.databaseName}
${jdbc.user}
${jdbc.password}
对于isValid(),选择1在内部被替换,没有性能问题

版本:

    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>2.4.1</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.3-1103-jdbc41</version>
    </dependency>

com.zaxxer
希卡里普
2.4.1
编译
org.postgresql
postgresql
9.3-1103-jdbc41

如果您在pgjdbc ng中遇到错误,请在github页面上报告,如果可能,请进行测试。我猜,在类路径上有多个版本的PgJDBC,C3P0发现了一个旧版本用于池。啊,你说得对,8.4 JDBC有一个令人讨厌的隐藏依赖。谢谢你指出这一点,现在一切都很好!