使用JPA时new Date()时间插入数据库时间差8个小时解决方法

  • Post author:
  • Post category:其他


使用JPA时new Date()时间插入数据库时间差8个小时解决方法

一. Docker部署环境时

分别检查docker内部镜像时区,如果时区不正确,推荐将docker镜像的时区和系统时区绑定。

version: "3"
services:
  deploy:
    build: doc
    container_name: doc_server
    network_mode: "host"
    ports:
      - 8080:8080
    volumes:
      - ./log:/log
      # 时区绑定到系统时间 
      - /etc/timezone:/etc/timezone
      - /etc/localtime:/etc/localtime

二. JPA进行新增数据时

createTime采用new Date()方式,则有可能出现时差问题,解决方案如下:

a. 修改JDBC参数的 serverTimezone=GMT%2b8

     datasource:
        type: com.zaxxer.hikari.HikariDataSource
        url: jdbc:mysql://17.17.27.21:3306/dbname?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
        username: root
        password: root

b. 修改在时间的实体类上加注解: @JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)

    // 创建时间
    @Basic
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "create_time", columnDefinition = "datetime COMMENT '创建时间'")
    private Date createTime;

    // 更新时间
    @Basic
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @Column(name = "update_time", columnDefinition = "datetime COMMENT '更新时间'")
    private Date updateTime = new Date();

添加后,重新部署服务,新增一条数据查看是否正常,祝君好运!



版权声明:本文为doinbb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。