【问题标题】:Java ZonedDateTime save in the DatabaseJava ZonedDateTime 保存在数据库中
【发布时间】:2017-10-09 09:19:30
【问题描述】:

我有一个模型对象,我想要一个带有日期的字段。现在我使用ZonedDateTime,因为它符合我们的需求。

Hibernate 将此字段作为tinyblob 存储在数据库中。我们能否将其在数据库中的保存方式更改为更易读的格式,更重要的是更改为可排序的格式?

使用的数据库是mysql db。

【问题讨论】:

  • 我假设“可排序”是指“可即时排序”? (如果你真的只想要一个约会,ZonedDateTime 不合适,顺便说一句。LocalDate 将是合适的类型。)
  • @JonSkeet 我在需要精确到毫秒时间的字段中使用 ZonedDateTime。 LocalDate 在我只需要日期的字段中。在这个线程中同时提及这两个都是矫枉过正
  • “在这个线程中同时提到这两个都是矫枉过正的。”我真的不认为要求您准确描述您要表示的数据是“矫枉过正”。你说你试图代表一个日期,但你不是。大概是您试图代表一个时刻以及相关的时区。当您尝试获得帮助时,尽可能准确非常重要。

标签: java mysql hibernate zoneddatetime


【解决方案1】:

这个问题已经作为一个新的improvementHibernate 5.0.0.Beta1 得到解决,最初它被捆绑在一个孤立的module hibernate-java8

现在直接捆绑在hibernate-core,所以只要确保你使用的是它的最新版本(5.2.X +),如果你使用的是maven,它应该是这样的

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-core</artifactId>
  <version>5.2.10.Final</version>
</dependency>

【讨论】:

  • 谢谢。我会试一试,让你知道:)
  • 我尝试了解决方案。 hibernate核心解决方案与spring数据有冲突。它需要 jpa 2 而 spring 数据与 jpa 一起工作并且应用程序甚至没有启动。我也试过hibernate-java8版本,但没有修复。
  • @Panos 那么你也必须升级你的 Spring Data 版本,至少升级到支持 Hibernate 5.2 的版本 1.11,在这里查看docs.spring.io/spring-data/jpa/docs/2.0.0.M3/reference/html/…
  • @fuji 在更改了我的所有依赖项之后(我删除了spring-boot-starter-jpa 并手动添加了spring数据和休眠依赖项)我设法让它工作但它保存为TIMESTAMP 当我保存ZonedDateTime 它忽略时区。有什么想法吗?
  • @Panos 检查this
猜你喜欢
  • 2017-12-09
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多