【发布时间】:2018-03-01 20:17:09
【问题描述】:
我在带有 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或PhysicalNamingStrategybean 在应用程序上下文中可用,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。
【问题讨论】:
-
这是一个有趣的问题。您能否在您的问题中添加 (a) Spring (boot) 和 (b) Hibernate 的确切版本号?
-
好消息@MWiesner。我将版本添加到帖子中。我正在使用 Spring Boot/Spring JPA 1.5.9.RELEASE,它为我提供了 Hibernate 核心 v.5.0.12.Final 和 Hibernate JPA API 2.1。
-
我遇到了完全相同的问题。 bean 由 spring 正确加载(当我将 @Bean 方法放入时,我看到系统输出出现),但 hibernate 似乎完全忽略了它们。我正在使用与约瑟夫完全相同的版本
标签: java spring hibernate jpa spring-boot