如何强制 JPARepository 以 yyyy-MM-dd HH:mm:ss.000 格式显示时间戳

How to force JPARepository to display timestamp in yyyy-MM-dd HH:mm:ss.000 format

我在维护几年前写的代码,使用JPARepository访问数据库。数据库中的 creationDate 列定义为日期时间。

旧版代码将从 creationDate 中提取值并将其显示为 "creationDate": "2015-03-27T14:44:05.897+0000"。

我不得不修改数据库中的几个表。在此过程中,我将 Spring Boot 升级到 1.4.3 版,这也带来了更新版本的 Hibernate。

现在,当我 运行 代码(没有更改任何日期)时,JSON 现在将列显示为 "creationDate": 1427467445897 。这会破坏调用我的网络服务的代码。

我的代码有:

@Column(name="CreationDate", nullable=true) 
private java.sql.Timestamp creationDate;

而且 getter 函数没有注解。我必须怎么做才能让 JSON 日期再次显示为“2015-03-27T14:44:05.897+0000”?

我怀疑这与 spring-data 无关,而是与 Jackson 有关,因为存储库不显示任何内容。

@Column(name="CreationDate", nullable=true)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
private java.sql.Timestamp creationDate;

查看 here 以获得正确的模式。

我找到了一个类似的解决方案:

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ", timezone="UTC")
public java.sql.Timestamp getCreationDate() {
    return creationDate;
}

我不知道该注释是否可以在数据声明或 getter 函数上,但它正在对 getter 函数起作用。