我一直在尝试创建一个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
例外。
有没有办法可以避免元数据表并仍然使用交易?
答案 0 :(得分:1)
spring.batch.initializer.enabled=false
此外,由于您不需要元表,因此请勿扩展DefaultBatchConfigurer
类。
如果我想设置一个持久的JobRepository
即创建弹簧批量元表,我只会扩展这个类,为此我们需要默认提供的许多其他配置{{ 1}} class。