我在使用Hibernate的Spring应用程序中有一个自定义命名策略:
public class MyCustomPhysicalNamingStrategy implements PhysicalNamingStrategy {
@Override
public Identifier toPhysicalTableName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
return Identifier.toIdentifier("my_custom_table_name");
}
// ...
}
The Spring documentation说我可以通过设置spring.jpa.hibernate.naming.physical-strategy
(工作正常)或者像这样来告诉Hibernate使用它:
或者,如果应用程序上下文中有
ImplicitNamingStrategy
或PhysicalNamingStrategy
个bean,Hibernate将自动配置为使用它们
我需要使用第二种方法,因为我需要将Spring的一些信息传递给我的命名策略。但是,我无法让它发挥作用。
我在以下配置类中创建bean:
@Configuration
public class PersistenceConfiguration {
@Bean
public PhysicalNamingStrategy physicalNamingStrategy() {
return new MyCustomPhysicalNamingStrategy();
}
}
我在这里缺少什么?
提前致谢。
编辑:我在Spring Boot / Spring JPA 1.5.9.RELEASE上,它给了我Hibernate核心v.5.0.12.Final和Hibernate JPA API 2.1。
答案 0 :(得分:1)
似乎只有Spring Boot 2支持。
该文件在Spring Boot 1.5中不存在:https://github.com/spring-projects/spring-boot/tree/v1.5.14.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/orm/jpa
({HibernateJpaAutoConfiguration.java
没有)