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问题。它告诉您必须使用 jdbcUrldataSourceClassName 但不能同时使用两者。我看到你同时使用了两者,所以只使用那个问题中提到的一个并检查是否有帮助。

除此之外,我刚刚检查了 getConnection(String username, String password) throws SQLException 何时被调用,看起来是否有: hibernate.connection.username and/or hibernate.connection.password 设置,那就是它被调用的时候。确保你没有在某处设置这两个属性。