Проблемы с таблицами метаданных Spring batch - PullRequest
0 голосов
/ 10 мая 2018

Я пытался создать пакетную программу Spring, которая должна считывать определенные данные из базы данных и записывать их в другую таблицу. Я не хочу, чтобы таблицы метаданных Spring Batch создавались в моей базе данных. Когда я попробовал это, я не смог сделать транзакции.

Я избежал таблиц метаданных, расширив DefaultBatchConfigurer и переопределив вот так:

@Override
    public void setDataSource(DataSource dataSource) {
        // override to do not set datasource even if a datasource exist.
        // initialize will use a Map based JobRepository (instead of database)
    } 

Делая это, я получаю org.springframework.dao.InvalidDataAccessApiUsageException: no transaction is in progress; nested exception is javax.persistence.TransactionRequiredException: no transaction is in progress исключение.

Есть ли способ, которым я могу избежать таблиц метаданных и все еще использовать транзакции?

1 Ответ

0 голосов
/ 12 мая 2018
  1. Если вы используете весеннюю загрузку, вы можете добавить следующую строку в application.properties или в файл свойств среды, чтобы убедиться, что таблицы метаданных весенней партии не создаются:

spring.batch.initializer.enabled=false

  1. Также, поскольку вам не нужны мета-таблицы, поэтому не расширяйте класс DefaultBatchConfigurer.

  2. Я бы расширил этот класс только в том случае, если я хочу установить постоянный JobRepository, т. Е. Создать мета-таблицы пружинного пакета, для которых нам нужно много других конфигураций, которые предоставляются по умолчанию классом DefaultBatchConfigurer .

...