java - MYSQL 8 JPA 2.0 mysql 在 JPA 保存后将 1 秒添加到当前日期
问题描述
我将 mysql 版本从 5.5.40 迁移到 8.0.18。迁移后,我更改了驱动程序类的 By JBoss 6 数据源配置。
<driver-class>com.mysql.cj.jdbc.Driver</driver-class>
我已将 mysql-connector-java-8.0.18 放入 lib 文件夹。然后我的应用程序毫无问题地部署到 Jboss 6。当我开始测试应用程序时,我发现了一些东西。关于模拟作业实体,我将 startDateTime 列设置为日期。模拟作业保存到数据库后,startDateTime 与我设置的不同。但只有一秒的区别。例如,如果我将日期设置为 2019-11-08 15:20:12,则数据库将其存储为 2019-11-08 15:20:13。我不确定这与时区有关。但无论如何,我使用以下语句更改了 mysql 的时区。
设置全球时区 = '+3:00';
@Entity
@Table(name = "SIMULATION_JOB")
public class SimulationJob implements Serializable {
/**
*
*/
private static final long serialVersionUID = -1768265008703114922L;
public SimulationJob() {
super();
}
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "SimulationJobIdGen")
@Column(name = "ID")
private long id;
@Column(name = "NAME")
@NotNull
@Size(max = 50)
private String name;
@Column(name = "PRIORITY")
private int priority;
@ManyToOne
@JoinColumn(name = "OWNER_USER_ID")
private User ownerUser;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATE_DATETIME")
private Date createDateTime;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "START_DATETIME")
private Date startDateTime;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "END_DATETIME")
private Date endDateTime;
}
解决方案
我想这可能与时间戳的舍入有关。在 MySQL 5.6.4 之前,小数秒(即毫秒)的处理是不同的。
也可以看看:
https://dev.mysql.com/doc/refman/8.0/en/fractional-seconds.html
https://dev.mysql.com/doc/refman/5.6/en/fractional-seconds.html
推荐阅读
- php - session.name 不能为数字或空
- google-apps-script - 错误:未授予访问权限或已过期。通过服务帐户和域范围的委派访问 Google Admin Directory API 时
- java - 如何将一个 docx 插入另一个 docx 的预定行
- node.js - 运行连接到 MongoDB 云集群的 nodejs 应用程序时,Docker-compose 给出:“node|SyntaxError: Unexpected token import”错误
- python-3.x - Python中磁盘/分区的大小与linux命令不同
- javascript - 如何等待 Http 请求完成?
- css - 当间隙设置为 0(响应式地图)时,为什么 CSS 网格中的图块之间存在小的像素间隙?
- spring - 在 Spring Boot 中为每个事务运行一个语句
- ffmpeg - ffmpeg中具有复杂操作的多个输入文件
- spring - 当第一个环境变量在 Spring 中未解决时,如何定义第二个环境变量?