Java PhysicalNamingStrategybean仅通过配置文件实例化

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.

我在带有Hibernate的Spring应用程序中有一个自定义命名策略:

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版中命名策略的文档,仅供其他人因同一问题来到这里时参考: