spring-jpa-mysql相隔一天

kb5ga3dv  于 2021-07-23  发布在  Java
关注(0)|答案(1)|浏览(604)

我正在使用一个springboot项目,它用jpa连接到一个本地mysql数据库。我有一张table和一张table DATE 在jpa模型类中镜像为 private Date myDate; 是那种类型的 java.sql.Date; . 当我在页面上显示项目中的记录时,日期落后一天(例如,如果是2021-01-25,则页面显示2021-01-24),当我通过项目更新或添加记录时,新选择的日期也落后于我选择的日期一天。我试图补充 spring.jpa.properties.hibernate.jdbc.time_zone : CET 但这没有任何效果。我这样显示记录 ${record.myDate} 在这样的页面和表格上:

<fieldset>
   <form:label path="myDate">Date *</form:label>
   <form:input path="myDate" type="date" required="required" class="form-control"/>
   <form:errors path="myDate" cssClass="text-warning" />
</fieldset>
cbeh67ev

cbeh67ev1#

mysql文档说明:
mysql以utc值存储时间戳。但是,mysql存储datetime值时没有时区。
因此,当您通过jpa从数据库中检索数据值时,很可能分配给它的时区与您期望的不同(可能是执行代码的上下文中的默认时区—您的应用程序服务器)。
我认为要使它正常工作,您可能需要使用 TIMESTAMP mysql中的列而不是 DATETIME .
一旦你做出了改变,你可能还应该使用 LocalDateTime 而不是 Date . jpa支持localdatetime-使用以下列定义:

@Column(name = "my_date_time", columnDefinition = "TIMESTAMP")
private LocalDateTime myDateTime;

相关问题