Spring JPA java.util.Date到Mysql时间戳,日期值错误

时间:2017-06-30 14:30:00

标签: java mysql jpa

我有一个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小时。尝试了几种方法如下:

  1. @Temporal(TemporalType.TIMESTAMP)用于字段

  2. 设置默认TimeZone
    TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));

  3. 在设置前打印日期,显示正确的值。

  4. 同样在mysql层设置时区:
    SET GLOBAL time_zone = '+8:00'; SET SESSION time_zone = '+8:00';

  5. 将字段类型更改为java.sql.Timestamp

  6. 上述方法都没有帮助。有人有类似的问题吗?任何线索?

1 个答案:

答案 0 :(得分:1)

发现问题,问题出在jdbc连接URL中。

spring.datasource.url = JDBC:MySQL的://:3307 / DBNAME的了useUnicode =真安培; useJDBCCompliantTimezoneShift =真安培; useLegacyDatetimeCode =假安培; serverTimezone = UTC

由于URL中的服务器时区设置,GMT + 8时间被转换为UTC,这导致了8小时的时差。删除URL中的serverTimezone参数后,日期工作正常。感谢Neil和Shazin的时间和支持。