Таблицы метаданных Spring batch не создаются в настроенной мной схеме - PullRequest
0 голосов
/ 02 июля 2019

Я настраиваю 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'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...