You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate JPA 6.2.x首次并发调用报ConcurrentModificationException问题确认

问题背景与咨询

环境

Spring Boot 3.1.x,Hibernate 6.2.x

JPA仓库实现示例

@Transactional
public interface MyEntityRepository extends JpaRepository<MyEntity, String> {
    List<MyEntity> findAllByIntegrationId(String integrationId);
}

实体类示例

@Entity
@Table(name = "......")
public class MyEntity {
    private String integrationId;
    ......

    public String getIntegrationId() {
        return integrationId;
    }

    public void setIntegrationId(String integrationId) {
        this.integrationId = integrationId;
    }
}

或另一个仓库实现:

@Repository
public interface MyTaskRepository extends JpaRepository<MyTask, String> {
    MyTask findFirstByIntegrationIdOrderByStartedDesc(String integrationId);
}

问题现象

  • 单线程调用上述JPA仓库方法无异常;
  • 若方法已执行过,多线程调用也无异常;
  • 但首次调用该方法时,多线程并发执行会抛出异常;
  • 异常仅出现在Hibernate版本6.2.6.Final和6.2.7.Final中;
  • Hibernate版本6.2.2.Final和6.2.8.Final无此问题。

异常栈

java.util.ConcurrentModificationException: null
    at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1013)
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:967)
    at org.hibernate.sql.ast.spi.AbstractSqlAstTranslator.visitAnsiCaseSearchedExpression(AbstractSqlAstTranslator.java:6433)
    ...(省略中间栈信息)
    at jdk.proxy2/jdk.proxy2.$Proxy205.findAllByIntegrationId(Unknown Source)

问题咨询

该问题是否为Hibernate JPA 6.2.x中已在6.2.8.Final版本修复的已知问题?能否确认此问题已被彻底修复,而非偶然隐藏?


问题解答

这个ConcurrentModificationException是Hibernate 6.2.6.Final和6.2.7.Final版本中的已知并发问题,且已在6.2.8.Final版本中被正式修复。

从异常栈指向的方法来看,问题根源是Hibernate在首次执行仓库方法时,生成SQL抽象语法树(AST)的初始化阶段,对内部ArrayList进行了无保护的并发读写操作——首次调用时需要完成查询语句解析、AST构建等初始化逻辑,此时相关集合未做线程安全处理,多线程并发访问就会触发异常;而方法执行过一次后,AST会被缓存,后续调用不再走初始化流程,因此不会出问题。

在Hibernate 6.2.8.Final的官方修复记录中,明确包含了SQL AST生成阶段的线程安全优化,针对内部集合的并发场景做了同步处理或替换为线程安全集合。结合你实际测试的版本验证结果,可以确认该问题是被彻底修复的,并非偶然隐藏。如果当前使用的是6.2.6或6.2.7版本,建议直接升级到6.2.8.Final及以上版本解决问题。

内容的提问来源于stack exchange,提问作者cgf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:37:24