Java 最新Postgres JDBC41无法与HikariCP和Hibernate一起使用:未实现isValid()
我想将我们的Javaservlet迁移到使用Hikari连接池而不是C3P0。 然而,我遇到了一个奇怪的错误-在Hibernate启动期间 servlet因以下原因崩溃: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
方法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有一个令人讨厌的隐藏依赖。谢谢你指出这一点,现在一切都很好!