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

Spring Boot 3.0迁移后orders.findAll().size()断言失败求助

Spring Boot 2.7迁移至3.0后JPA单元测试断言异常问题

我正在将Spring Boot应用从2.7版本迁移至3.0版本。修改pom.xml后,Groovy类中的大部分单元测试开始失败,部分为应用上下文问题,部分为断言错误。我已修复大部分问题,但仍有两个单元测试存在异常:断言orders.findAll().size() == 1时,预期值为1,实际值为2。

无法展示更多代码,但业务场景如下:

  • 给定:数据库中创建了一个订单
  • 当:订单被取消并替换为同一订单的新版本(版本号+1),数据一致
  • 预期:集合中仅存在一个活跃订单,集合大小应为1而非2

业务逻辑未做任何变更,推测可能是ORM相关依赖变更导致该问题。以下是pom.xml中变更的ORM依赖:

迁移前的依赖配置

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.18</version>
    <relativePath/>
</parent>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.200</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jcache</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-envers</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.1-api</artifactId>
    <version>1.0.0.Final</version>
</dependency>

迁移后的依赖配置

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.0</version>
    <relativePath/>
</parent>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <version>3.1.0</version>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
</dependency>
<dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-jcache</artifactId>
    <version>6.1.7.Final</version>
</dependency>
<dependency>
    <groupId>jakarta.jms</groupId>
    <artifactId>jakarta.jms-api</artifactId>
    <version>3.1.0</version>
</dependency>

我已检查测试类中的cleanup()方法,确认其工作正常。是否有人遇到过类似的Hibernate与数据库相关的变更问题?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:23:11