栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Hibernate / JPA和JDK日期进行不需要的自动时区转换

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Hibernate / JPA和JDK日期进行不需要的自动时区转换

我自己遇到了这个。我看到的是,即使您已在日期中将UTC指定为时区(并且可以通过打印出来并在末尾看到“
Z”来查看),但出于某种原因,JVM还是想接管并使用JVM的默认时区为您转换日期。

无论如何,您需要一个自定义映射来解决此问题。尝试使用 Jadira:

@Entity@Table(name = "MY_TABLE")public class MyTable implements Serializable {  . . .  @Column(name = "START_DATE")  @Type(type="org.jadira.usertype.dateandtime.legacyjdk.PersistentDate")  private Date startDate;  public Date getStartDate() {    return startDate;  }  public void setStartDate(Date startDate) {    this.startDate = startDate;  }  . . .}

默认情况下,Jadira的

PersistentDate
类在将日期转换为要存储在数据库中的毫秒值时,使用UTC作为时区。您可以指定其他时区,但听起来像是要存储UTC。

就像您的帖子中的注释所暗示的那样,有时您用来查询数据库的工具正在为您进行愚蠢的自动(基于我的JDK默认TZ的转换),使您相信该值仍然不正确。

您也可以尝试存储原始值(作为INTEGER),只是为了使自己确信已存储了正确的毫秒值。

HTH,

摩西



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391908.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号