首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring data jpa在异常时继续批量插入

问Spring data jpa在异常时继续批量插入
EN

Stack Overflow用户
提问于 2021-06-24 22:50:38
回答 2查看 388关注 0票数 0

在我的spring boot应用程序中,我正在尝试进行批量插入,以提高写入性能。问题是我经常得到重复的数据,对于这些重复数据,我的表有几个唯一的约束。在执行串行插入时,我只是捕获DataIntegrityException并忽略它们。但在执行批插入时,即使只有一次插入失败,也不会保存整个批。我希望hibernate仍然保存不抛出错误的记录。我使用repository.saveAll()进行插入,我的数据库是Mysql

EN

回答 2

Stack Overflow用户

发布于 2021-06-25 03:30:20

在批处理过程中,您需要添加

代码语言:javascript
复制
 .faultTolerant()
 .skipPolicy(new AlwaysSkipItemSkipPolicy())

在编写器之后的步骤中。例如,在我的步骤中,我将其配置如下

代码语言:javascript
复制
@Bean
 public Step step1(){
      return steps.get("step1")
              .<Product,Product>chunk(3)
              .reader(reader(null))
              .processor(new ProductProcessor())
              .writer(flatFileItemWriter(null))
             //  .writer(xmlWriter(null))
             // .writer(dbWriter())
             //   .writer(dbWriter2())
              .faultTolerant()
              .skipPolicy(new AlwaysSkipItemSkipPolicy())
              .listener(new ProductSkipListener())
              .build();
 }

这只能完成一半的工作,因为您还希望在最后看到无法添加的记录。为此,您需要添加侦听器,它基本上实现了如何处理对象尚未写入数据库的情况的逻辑。

票数 0
EN

Stack Overflow用户

发布于 2021-07-01 02:09:23

这不可能。在发生异常后,Hibernate的内部结构就不再工作了。您必须捕获异常并在新的事务/实体管理器中重试您的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68118046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档