spring data jpa deleteInBatch 导致异常 java.lang.StackOverflowError

  • 异常现象:使用deleteInBatch删除实体list如果元素数量过多会抛出异常如下:
    在这里插入图片描述
  • 原因分析:deleteInBatch实际转换为如下的sql
delete from [table_name] where [criteria] = id or [criteria] = id (and so on...)

HqlSqlBaseWalker需要搜索遍历所有的where条件语句,如图报错中执行了1020次导致溢出错误。

  • 解决方案:将集合划分为多个小的集合分次调用deleteInBatch

猜你喜欢

转载自blog.csdn.net/zhoudingding/article/details/107181368