Hikari + Hibernate + Postgres:无法连接
Hikari + Hibernate + Postgres: can't connect
我有一个将 C3p0 与 Hibernate 5 和 Hibernate 结合使用的应用程序。我想试用 Hikari,但我无法将应用程序发送到 运行。
Maven
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.8</version>
</dependency>
Hibernate 版本为:5.2.17.Final
Spring配置
public LocalSessionFactoryBean sessionFactory()
throws Exception
{
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource( dataSource() );
...
}
private DataSource dataSource()
{
String jdbcUrl = "jdbc:postgresql://localhost/demo";
String user = "john";
String pw = "pwd123";
String url = String.format( "%s?user=%s&password=%s", jdbcUrl, user, pw);
final HikariDataSource ds = new HikariDataSource();
ds.setMaximumPoolSize( 10 );
ds.setDataSourceClassName( "org.postgresql.ds.PGSimpleDataSource" );
ds.addDataSourceProperty( "url", url );
...
return ds;
}
我尝试了上述方法的不同排列,包括将用户名和密码直接传递给数据源:
ds.addDataSourceProperty( "user", "john" );
ds.addDataSourceProperty( "password", "pw123" );
但我总是以这个错误:
结束
Caused by: java.sql.SQLFeatureNotSupportedException
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:135)
这是由这个 Hikari 函数引起的:
@Override
public Connection getConnection(String username, String password) throws SQLException
{
throw new SQLFeatureNotSupportedException();
}
查看this问题。它告诉您必须使用 jdbcUrl
或 dataSourceClassName
但不能同时使用两者。我看到你同时使用了两者,所以只使用那个问题中提到的一个并检查是否有帮助。
除此之外,我刚刚检查了 getConnection(String username, String password) throws SQLException
何时被调用,看起来是否有:
hibernate.connection.username
and/or hibernate.connection.password
设置,那就是它被调用的时候。确保你没有在某处设置这两个属性。
我有一个将 C3p0 与 Hibernate 5 和 Hibernate 结合使用的应用程序。我想试用 Hikari,但我无法将应用程序发送到 运行。
Maven
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.8</version>
</dependency>
Hibernate 版本为:5.2.17.Final
Spring配置
public LocalSessionFactoryBean sessionFactory()
throws Exception
{
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource( dataSource() );
...
}
private DataSource dataSource()
{
String jdbcUrl = "jdbc:postgresql://localhost/demo";
String user = "john";
String pw = "pwd123";
String url = String.format( "%s?user=%s&password=%s", jdbcUrl, user, pw);
final HikariDataSource ds = new HikariDataSource();
ds.setMaximumPoolSize( 10 );
ds.setDataSourceClassName( "org.postgresql.ds.PGSimpleDataSource" );
ds.addDataSourceProperty( "url", url );
...
return ds;
}
我尝试了上述方法的不同排列,包括将用户名和密码直接传递给数据源:
ds.addDataSourceProperty( "user", "john" );
ds.addDataSourceProperty( "password", "pw123" );
但我总是以这个错误:
结束Caused by: java.sql.SQLFeatureNotSupportedException
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:135)
这是由这个 Hikari 函数引起的:
@Override
public Connection getConnection(String username, String password) throws SQLException
{
throw new SQLFeatureNotSupportedException();
}
查看this问题。它告诉您必须使用 jdbcUrl
或 dataSourceClassName
但不能同时使用两者。我看到你同时使用了两者,所以只使用那个问题中提到的一个并检查是否有帮助。
除此之外,我刚刚检查了 getConnection(String username, String password) throws SQLException
何时被调用,看起来是否有:
hibernate.connection.username
and/or hibernate.connection.password
设置,那就是它被调用的时候。确保你没有在某处设置这两个属性。