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

Maven运行Spring Boot JUnit5测试时data.sql日期字段未正确入库问题

问题根因排查
  1. Hibernate版本冲突导致的日期类型映射异常
    Spring Boot 2.3.2.RELEASE 默认适配的Hibernate核心版本为5.4.18.Final,你在pom中手动指定了低版本5.3.5.Final,版本不兼容会导致JPA字段映射逻辑异常,尤其是LocalDateTime这类JSR310日期类型的映射。IDE运行时可能优先加载了项目依赖的高版本适配包,Maven执行测试时严格按照pom的依赖仲裁加载了5.3.5版本,因此出现运行结果差异。
  2. Maven测试执行时区和IDE时区不一致
    data.sql中写的是字符串格式的日期,H2数据库解析日期时如果时区和预期不一致,可能出现日期解析失败被置为null的情况。IDE默认使用操作系统时区,Maven的surefire插件如果未指定时区,默认会使用UTC时区,可能导致日期解析异常。
  3. 实体类日期字段注解配置不正确
    如果created_on字段对应的实体属性是LocalDateTime,未指定字段类型映射规则的话,低版本Hibernate可能无法正确匹配H2数据库的timestamp类型,导致插入后读取为null。
解决方案
  • 移除pom中手动指定版本的Hibernate依赖,让Spring Boot父依赖自动管理兼容的Hibernate版本,删除如下配置:
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.3.5.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jpamodelgen</artifactId>
    <version>5.3.5.Final</version>
</dependency>

如果确实需要使用jpamodelgen,只保留依赖节点、去掉<version>标签即可,父依赖会自动匹配兼容版本。

  • 在pom中添加maven-surefire-plugin配置,指定测试运行的时区和编码,避免和IDE运行环境差异:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <argLine>-Duser.timezone=Asia/Shanghai -Dfile.encoding=UTF-8</argLine>
            </configuration>
        </plugin>
    </plugins>
</build>
  • 检查实体类日期字段的注解配置,确保类型映射正确,示例配置如下:
// 如果使用LocalDateTime类型
@Column(name = "created_on", columnDefinition = "timestamp")
private LocalDateTime createdOn;

// 如果使用Date类型
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_on")
private Date createdOn;
  • 修改data.sql中的日期写法,用H2数据库支持的timestamp函数包裹,避免字符串解析异常:
INSERT INTO orders (order_id, number, client_id, created_on)
values (2, '0002', 1, TIMESTAMP '2021-11-21 16:12:20.414' );
  • 若以上配置修改后问题仍存在,检查maven的资源过滤配置,确保src/main/resources下的data.sql被正确拷贝到测试类路径下,没有被过滤规则排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:36:01