Hibernate 6.x+ 单元测试中共享会话引发NonUniqueObjectException问题求助
Hibernate 6.x+ 单元测试中共享会话引发NonUniqueObjectException问题求助
各位好,我最近升级到Hibernate 6.x+之后,在单元测试里碰到了共享会话相关的问题,卡了好半天没解决,来这儿求助大家!
我的测试场景是这样的:
- 首先在测试初始化阶段创建一条Banana记录
- 接着执行一个并发测试逻辑:启动10个线程,循环15次去尝试删除这条Banana记录
结果每次跑这个并发测试都会抛出异常,关键错误信息如下:
Caused by: org.hibernate.NonUniqueObjectException: A different object with the same identifier value
我自己琢磨着,会不会是并发场景下多个线程共用了同一个Hibernate会话,导致不同线程里的Banana对象虽然ID一致,但却是不同的实例,被会话判定为冲突对象?而且奇怪的是,在Hibernate 5.x版本的时候完全没这个问题,升级到6.x之后才出现的,难道是Hibernate 6.x在会话管理或者并发处理的逻辑上有什么变动吗?
有没有大佬遇到过类似的情况?或者能给点排查的方向?比如是不是单元测试里的会话配置需要调整,或者并发测试时应该给每个线程单独分配会话?
内容来源于stack exchange
相关产品推荐
相关产品推荐

