Java Spring-Hibernate JPA配置中的问题设置方言

Java Spring-Hibernate JPA配置中的问题设置方言,java,spring,hibernate,spring-mvc,jpa,Java,Spring,Hibernate,Spring Mvc,Jpa,我正在从Spring Boot 1.5.9迁移到普通的Spring项目 在application.properties中,我添加了 spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration spring.autoconfigure.exclude[1]=org.springframework.boot.autoconfigure.jdbc.

我正在从Spring Boot 1.5.9迁移到普通的Spring项目

application.properties
中,我添加了

spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration
spring.autoconfigure.exclude[1]=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
spring.autoconfigure.exclude[2]=org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration
spring.autoconfigure.exclude[3]=org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
application.properties
中,我有一行定义了我使用的方言,它与自动配置一起正常工作

spring.jpa.hibernate.naming.implicit strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl

当我尝试使用新的配置类运行项目时,我遇到了
org.springframework.beans.factory.BeanCreationException:创建名为“entityManagerFactory”的bean时出错
,如果删除方言行,我在自动配置中也会遇到同样的错误。 我在configuration类中指定属性(包括方言)的方法如下

private Map<String, String> properties = new HashMap<String, String>();

public HibernateJpaConfig() {
    properties.put("hibernate.hbm2ddl.auto", "create-drop");
    properties.put("hibernate.ejb.naming_strategy", "org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl");
}

如果我尝试用其中一个值替换映射的第二个值,我仍然会有相同的错误。

请查看spring boot的发行说明。

我认为问题在于命名策略

SpringNamingStrategy不再使用,因为Hibernate 5.1已删除对旧NamingStrategy接口的支持。新的SpringPhysicalNamingStrategy现已自动配置,并与Hibernate的默认隐式NamingStrategy结合使用。这应该非常接近(如果不是完全相同的话)SpringBoot1.3的默认值,但是,升级时应该检查数据库模式是否正确

如果您在升级之前已经在使用Hibernate 5,那么您可能正在使用Hibernate的5默认值。如果要在升级后恢复它们,请在配置中设置此属性:

spring.jpa.hibernate.naming.physical strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

WARN 13292 --- [  restartedMain] org.hibernate.orm.deprecation            : HHH90000006: Attempted to specify unsupported NamingStrategy via setting [hibernate.ejb.naming_strategy]; NamingStrategy has been removed in favor of the split ImplicitNamingStrategy and PhysicalNamingStrategy; use [hibernate.implicit_naming_strategy] or [hibernate.physical_naming_strategy], respectively, instead.