我正在尝试为一个Sping Boot 项目配置两个数据源。下面是我的主数据源配置文件。
@PropertySource({"classpath:application-local.properties"})
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "primaryEntityManager",
basePackages = {"portal.api.repository"}
)
public class PrimaryDbConfig {
@Autowired
private Environment env;
@Bean
@Primary
public LocalContainerEntityManagerFactoryBean primaryEntityManager() {
LocalContainerEntityManagerFactoryBean em
= new LocalContainerEntityManagerFactoryBean();
em.setDataSource(primaryDataSource());
em.setPackagesToScan(
new String[]{"portal.api.model"});
HibernateJpaVendorAdapter vendorAdapter
= new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
HashMap<String, Object> properties = new HashMap<>();
properties.put("hibernate.hbm2ddl.auto",
env.getProperty("app.datasource.spring.jpa.hibernate.ddl"));
properties.put("hibernate.dialect",
env.getProperty("hibernate.dialect"));
em.setJpaPropertyMap(properties);
return em;
}
@Primary
@Bean
public DataSource primaryDataSource() {
DriverManagerDataSource dataSource
= new DriverManagerDataSource();
dataSource.setDriverClassName(
env.getProperty("app.datasource.driver-class-name"));
dataSource.setUrl(env.getProperty("app.datasource.url"));
dataSource.setUsername(env.getProperty("app.datasource.username"));
dataSource.setPassword(env.getProperty("app.datasource.password"));
return dataSource;
}
@Primary
@Bean
public PlatformTransactionManager userTransactionManager() {
JpaTransactionManager transactionManager
= new JpaTransactionManager();
transactionManager.setEntityManagerFactory(
primaryEntityManager().getObject());
return transactionManager;
}
}
生成了表,但是它们的名称和列名称是驼峰式的。但是我希望使用spring Boot 默认使用的下划线名称。例如,ApiKey
实体将更改为表名api_key
。
如何配置Sping Boot 以使用带下划线的命名策略?
2条答案
按热度按时间i2byvkas1#
我认为如果您在域模型的示例变量中使用@Column(name =“API_key”),它将工作。
例如:
6qftjkof2#
来自Official doc的参考
默认情况下,Spring Boot使用SpringPhysicalNamingStrategy配置物理命名策略,该实现提供了与Hibernate 4相同的表结构:所有点都被下划线替换,并且驼峰式大小写也被下划线替换。
您可以在
application.yml
中设置以下属性来告诉springboot使用哪种命名策略:类似岗位参考:java. sql. sql语法错误异常:未知列。JPA实体问题?