Lors de l'utilisation de JPA, la nouvelle heure Date () est insérée dans la base de données et le décalage horaire est de 8 heures. Solution
1. Environnement de déploiement Docker
Vérifiez respectivement le fuseau horaire du miroir interne du docker. Si le fuseau horaire est incorrect, il est recommandé de lier le fuseau horaire du miroir Docker au fuseau horaire du système.
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
2. Lorsque JPA ajoute des données
CreateTime adopte la nouvelle méthode Date () et le décalage horaire peut se produire. La solution est la suivante:
a. Modifiez serverTimezone = GMT% 2b8 des paramètres JDBC
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. Modifiez pour ajouter un commentaire sur la classe d'entité de temps: @JsonFormat (timezone = "GMT + 8", pattern = "aaaa-MM-jj 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();
Après l'ajout, redéployez le service et ajoutez une nouvelle donnée pour vérifier si c'est normal. Bonne chance!