Java PhysicalNamingStrategybean仅通过配置文件实例化
我在带有Hibernate的Spring应用程序中有一个自定义命名策略:Java PhysicalNamingStrategybean仅通过配置文件实例化,java,spring,hibernate,jpa,spring-boot,Java,Spring,Hibernate,Jpa,Spring Boot,我在带有Hibernate的Spring应用程序中有一个自定义命名策略: public class MyCustomPhysicalNamingStrategy implements PhysicalNamingStrategy { @Override public Identifier toPhysicalTableName(Identifier identifier, JdbcEnvironment jdbcEnvironment) { return Identifier.
public class MyCustomPhysicalNamingStrategy implements PhysicalNamingStrategy {
@Override
public Identifier toPhysicalTableName(Identifier identifier, JdbcEnvironment jdbcEnvironment) {
return Identifier.toIdentifier("my_custom_table_name");
}
// ...
}
说我可以通过设置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 core v.5.0.12.Final和Hibernate JPA API 2.1。这似乎只有Spring Boot 2支持 见: 此文件在spring boot 1.5中不存在:
(
hibernatejpaaautoconfiguration.java
没有它)这是一个有趣的问题。请您在问题中添加(a)Spring(boot)和(b)Hibernate的确切版本号好吗。我将这些版本添加到帖子中。我使用的是Spring Boot/Spring JPA 1.5.9.RELEASE,它为我提供了Hibernate core v.5.0.12.Final和Hibernate JPA API 2.1。我遇到了完全相同的问题。spring正确地加载了bean(我在@bean方法中放入时看到系统输出),但是hibernate似乎完全忽略了它们。我使用的版本与JosephGood catch完全相同,@nsv。谢谢以下是1.5.9.1版中命名策略的文档,仅供其他人因同一问题来到这里时参考: