Spring批量元数据表的问题

时间:2018-05-10 08:42:40

标签: java spring spring-data-jpa spring-batch

我一直在尝试创建一个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 :(得分:1)

  1. 如果您使用的是spring boot,可以将以下行添加到application.properties或特定于环境的属性文件中,以确保不会创建Spring批处理元数据表:
  2. spring.batch.initializer.enabled=false

    1. 此外,由于您不需要元表,因此请勿扩展DefaultBatchConfigurer类。

    2. 如果我想设置一个持久的JobRepository即创建弹簧批量元表,我只会扩展这个类,为此我们需要默认提供的许多其他配置{{ 1}} class。