java - Spring 批处理元数据表未在我配置的模式中创建
问题描述
我正在为我的批处理作业配置具有现有数据源和 LocalContainerEntityManagerFactoryBean 的 JpaTransactionManager。当我调试时,JpaTransactionManager 设置了我想要元数据表应该去的模式“dbs”。但实际上,元数据表是在“公共”模式中创建的。我正在使用的数据库是'postgress'
我尝试扩展 DefaultBatchConfigurer 和所有可能的方法,结果仍然相同
这是我的 application.yml 文件:
spring:
datasource:
url: ${DB_URL:jdbc:postgresql://127.0.0.1:5432/postgres}
username: ${DB_USER_NAME:postgres}
password: ${DB_PASSWORD:******}
driver-class-name: org.postgresql.Driver
jpa:
show-sql: false
properties:
hibernate:
format_sql: false
generate_statistics: true
dialect: org.hibernate.dialect.PostgreSQLDialect
default_schema: dbs
hibernate:
ddl-auto: none
batch:
job:
enabled: false
initializer:
enabled: true
批处理配置文件如下所示:
public class StatusBatchConfig extends DefaultBatchConfigurer {
@Autowired
private DataSource dataSource;
@Override
@Bean
@Primary
protected JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(dataSource);
factory.setTransactionManager(transactionManager());
factory.afterPropertiesSet();
return factory.getObject();
}
@Bean
@Primary
public JpaTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setDataSource(dataSource);
transactionManager.setEntityManagerFactory(entityManagerFactory.getObject());
String schema = (String) entityManagerFactory.getObject().getProperties().get("hibernate.default_schema");
System.out.println(schema); //prints 'dbs'
return transactionManager;
}
@Bean
public SimpleJobLauncher jobLauncher(JobRepository jobRepository) {
SimpleJobLauncher launcher = new SimpleJobLauncher();
try {
launcher.setJobRepository(createJobRepository());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return launcher;
}
}
还有什么要在这里配置以将元数据表保存在“dbs”模式中
解决方案
推荐阅读
- cgal - 以 api 方式添加 CGAL 点的正确方法
- css - 如何使具有像素大小的反应应用程序适应不同的屏幕尺寸?
- python - 过滤熊猫数据框的重复行,仅保留最新日期的行
- python - Python,绘制外推图以获得 Y 轴截距
- r - R:如何使用 foreach 进行预先指定的重复次数,例如在 while 循环中
- playframework - play-grpc:未生成 AkkaGrpcClientModule
- c# - COII:哪些 OpenCV 函数会偷偷改变 COI?
- python - Tkinter selenium.common.exceptions.InvalidArgumentException:消息:无效参数
- python - 如何在 BS4(python 3)中按类查找元素
- javascript - 如何跨不同模块或js文件更改变量?