【发布时间】:2015-08-05 10:06:21
【问题描述】:
我有一个带有 Hibernate 的 spring-boot 应用程序。我想提供自定义 NamingStrategy 来为 hibernate 管理的每个表添加前缀。
我发现我可以使用属性:
spring.jpa.hibernate.naming_strategy=com.whatever.MyNamingStrategy
这很好用,除了我想根据属性动态地添加前缀。我的目标是:
@Component
public class PrefixNamingStrategy extends DefaultNamingStrategy {
private final String prefix;
@Autowired
public PrefixNamingStrategy(@Value("db.table.prefix") String prefix) {
this.prefix = prefix;
}
@Override
public String tableName(String tableName) {
return prefix + super.tableName(tableName);
}
}
显然这不适用于该属性。
我尝试提供自定义 SessionFactory 并在那里提供 NamingStrategy 但没有运气 - bean 是在 hibernate 初始化后创建的,甚至似乎没有被使用:
@Autowired
@Bean(name = "sessionFactory")
public SessionFactory getSessionFactory(DataSource dataSource) {
LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
sessionBuilder.setNamingStrategy(...); // !
return sessionBuilder.buildSessionFactory();
}
有没有办法将自定义NamingStrategy 提供为 bean?
干杯
【问题讨论】:
标签: spring hibernate spring-boot