Я настраиваю JpaTransactionManager с существующим источником данных и LocalContainerEntityManagerFactoryBean для моего пакетного задания. Когда я отлаживаю, 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
А файл Batch Config выглядит так:
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'