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