【发布时间】:2017-12-04 13:19:39
【问题描述】:
我有一个带有日期字段的 JPA 实体被持久化到 Mysql DateTime 中。
字段:
@Column(name = "CREATION_DATE")
private Date creationDate;
列:CREATION_DATE datetime DEFAULT NULL,
二传手:
request.setCreationDate(new Date());//Value set to current date
我收到一个奇怪的错误,即持续日期比当前时间少 8 小时。尝试了以下几种方法:
在字段中使用
@Temporal(TemporalType.TIMESTAMP)设置默认时区
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));打印设置前的日期,显示正确的值。
在 mysql 层也设置时区:
SET GLOBAL time_zone = '+8:00'; SET SESSION time_zone = '+8:00';将字段类型更改为
java.sql.Timestamp
上述方法都没有帮助。有人有类似的问题吗?有什么线索吗?
【问题讨论】:
-
您是否在云环境中部署了代码?
-
它部署在rehl裸机服务器中。
-
我想知道 JPA 提供者的日志是怎么说的?你看过不是吗? ...
-
没试过打印sql和参数值。我会尝试启用它。这个问题没有发生在我在 oracle jdk 中运行的开发机器中,仅在运行 openjdk 的服务器中发生。 oracle和open jdk在这方面有什么区别吗?
-
我尝试打印休眠日志时间戳是正确的