我有一个使用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();
}
答案 0 :(得分:0)
查看this问题。它告诉您必须使用jdbcUrl
或dataSourceClassName
,但不能同时使用。我看到您同时使用了两者,因此请仅使用该期中提到的一种,然后检查是否有帮助。
除此之外,我刚刚检查了何时调用getConnection(String username, String password) throws SQLException
,看起来是否具有:
hibernate.connection.username
和/或hibernate.connection.username
设置,多数民众赞成在什么时候被调用。确保没有在某处设置这两个属性。