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

2020-07-08 14:45:09 浏览数 (1)

  • 异常现象:使用deleteInBatch删除实体list如果元素数量过多会抛出异常如下:
  • 原因分析:deleteInBatch实际转换为如下的sql
代码语言:javascript复制
delete from [table_name] where [criteria] = id or [criteria] = id (and so on...)

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

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

0 人点赞