spring-data-jpa 出现异常时Spring Batch JPA跳过插入

vsdwdz23  于 2022-11-10  发布在  Spring
关注(0)|答案(2)|浏览(192)

我正在使用Sping Boot JPARepository saveall()批量插入记录,但遇到任何异常时,整个批处理都失败了。我如何在批量插入时跳过异常并继续保存其他记录?

nxagd54h

nxagd54h1#

你不能,你必须遍历列表,并为每个条目调用save
顺便说一句,这正是saveAll的作用:
这就是SimpleJpaRepository的实现:

@Transactional
@Override
public <S extends T> List<S> saveAll(Iterable<S> entities) {

    Assert.notNull(entities, "Entities must not be null!");

    List<S> result = new ArrayList<>();

    for (S entity : entities) {
        result.add(save(entity));
    }

    return result;
}
uqjltbpv

uqjltbpv2#

Spring Batch中有一个叫做块扫描的特性,基本上允许你“扫描”一个块中失败的项目,如果在写入整个块时发生异常,就跳过它们。要激活这个特性,你需要使用一个容错步骤,并将异常声明为可跳过的。
有关该功能的详细信息,请查看参考文档中的“配置跳过逻辑”一节。您也可以在此处找到示例。

相关问题