【问题标题】:PhysicalNamingStrategy bean only instantiates via config filePhysicalNamingStrategy bean 仅通过配置文件实例化
【发布时间】: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 使用它,或者像这样:

或者,如果 ImplicitNamingStrategyPhysicalNamingStrategy 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。

【问题讨论】:

  • 这是一个有趣的问题。您能否在您的问题中添加 (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


【解决方案1】:

【讨论】:

猜你喜欢
  • 2016-04-09
  • 1970-01-01
  • 2015-08-03
  • 1970-01-01
  • 2012-08-30
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多