Hikari + Hibernate + Postgres:无法连接

时间:2019-11-22 15:45:33

标签: spring postgresql hibernate hikaricp

我有一个使用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>

休眠版本为:5.2.17.Final

春季配置

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();
}

1 个答案:

答案 0 :(得分:0)

查看this问题。它告诉您必须使用jdbcUrldataSourceClassName,但不能同时使用。我看到您同时使用了两者,因此请仅使用该期中提到的一种,然后检查是否有帮助。

除此之外,我刚刚检查了何时调用getConnection(String username, String password) throws SQLException,看起来是否具有: hibernate.connection.username和/或hibernate.connection.username 设置,多数民众赞成在什么时候被调用。确保没有在某处设置这两个属性。