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

Spring JPA @CreatedDate返回LocalDateTime格式异常问题排查

问题原因

你遇到的LocalDateTime返回数组的问题,是因为Jackson默认对Java 8日期时间类型的序列化规则导致的——它会将LocalDateTime拆分为年、月、日、时、分、秒等元素组成的数组,而非转为符合业务预期的字符串格式。

解决方案

以下是几种可行的解决方式,按推荐优先级排序:

1. 全局配置(推荐)

在application.yml中添加Jackson的日期时间序列化配置,统一处理所有Java 8时间类型:

spring:
  jackson:
    serialization:
      write-dates-as-timestamps: false
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8 # 根据你的实际时区调整,比如UTC

同时注意你现有jpa配置存在格式错误,修正如下:

jpa:
  properties:
    hibernate:
      dialect: org.hibernate.dialect.PostgreSQLDialect
  show-sql: true # 修正键值对的格式写法

2. 字段级注解(局部处理)

如果只想单独处理特定时间字段,可以在实体类的对应字段上添加Jackson序列化注解:

@CreatedDate
@Column(name = "create_ts", nullable = false, updatable = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createdDate;

@LastModifiedDate
@Column(name = "update_ts")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime lastModifiedDate;

3. 检查依赖(确保Java 8时间序列化支持)

Spring Boot 2.x及以上版本默认包含jackson-datatype-jsr310依赖,该依赖用于支持Java 8日期时间类型的序列化。如果是旧版本项目,需手动添加依赖:

Maven

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

Gradle

implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
额外代码修正

你的Controller代码存在变量错误:返回时调用userProfService.getUserProfile(id).get(),但方法参数是dsid,id为未定义变量,需修正为:

return new ResponseEntity<>(userProfService.getUserProfile(dsid).get(), HttpStatus.OK);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:10:22