我在带有 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 使用它:
Alternatively, if
ImplicitNamingStrategy
orPhysicalNamingStrategy
beans are available in the application context, Hibernate will be automatically configured to use them
我需要使用第二种方法,因为我需要将一些信息从 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。
最佳答案
好像只有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
没有)
关于java - PhysicalNamingStrategy bean 仅通过配置文件实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49058013/