我正在升级kotlin Spring Boot 1.x应用程序以使用Spring Boot 2.1.6
以前,我使用EntityManagerFactoryBeanCallback
将hibernate.connection.provider_class
设置为ConnectionProvider
的自定义实现。在Spring Boot 2.0和2.1中已弃用并删除了它。
我现在正尝试使用HibernatePropertiesCustomizer
@Bean
fun hibernatePropertiesCustomizer() = HibernatePropertiesCustomizer {
it["hibernate.connection.provider_class"] = ScopedConnectionProvider::class.java.name
}
应用程序现在引发错误:
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Caused by:
org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Caused by:
org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
如果我在it["hibernate.connection.provider_class"] = ScopedConnectionProvider::class.java.name
行中注释掉,那么所有的东西都可以正常工作,除了自定义ConnectionProvider
作为参考,我正在使用ScopedConnectionProvider
通过在每个连接上设置代表客户范围ID的变量来启用我们的多租户。任何允许我在每个连接上运行SET @scope_id = ?
查询的替代解决方案也都可以。
相关版本信息:
答案 0 :(得分:0)
事实证明,数据源已不再正确地注入我的package automationFramework;
import browser.Browser;
public class FirstTestCase extends Browser{
public static void main(String[] args) throws Exception {
Browser.launchnavigatetoUrl(driver);
System.out.println("The length of title is :" +Browser.getDriver(driver).getWindowHandle().length());
Browser.getDriver(driver).close();
}
}
中。我进行了更改,以便从ScopedConnectionProvider
继承,而不是从头开始实现自己的DatasourceConnectionProviderImpl
。这似乎消除了指定方言的需要。