【问题标题】:JPA save another Time into databaseJPA 将另一个时间保存到数据库中
【发布时间】:2020-02-23 10:46:02
【问题描述】:

我在使用 JPA 将时间类型保存到数据库时遇到了问题。 从浏览器到 Java 的时间值被正确映射,但是当 JPA 将该值保存到 DB 时,它变成了一个不同的值。 有什么解决方案可以在不更改时间数据的情况下将时间保存到数据库中? (我只有2个解决方案:将Time类型改为long或string,但我还是更喜欢能保存Time值的方案)。

【问题讨论】:

  • 检查所有三个系统的时区是否一致

标签: java mysql spring jpa time


【解决方案1】:

实际上,您正在尝试将时间戳(实际上代表一个时间点)字段用于持续时间(代表时间间隔)目的。

当您输入 11:00 时,它可能表示 PST、UTC、ICT 时区的 11:00。这些将是完全不同的价值观。

您必须使用 java.time.Duration 和 MySQL 中的 TIME 字段,而不是 java.util.Date (http://www.mysqltutorial.org/mysql-time/)

【讨论】:

  • 感谢您的回答。但最后,我还是需要将 Duration 转换为 String 或 Long,因为 JPA 不会自动将 Duration 转换为 Time 值
  • 是的......这是在持续时间字段中发生的一种非常常见的方式。由于 jdbc 对该字段没有很好的支持,并且某些数据库没有开箱即用的这种字段类型 - 长字段是非常常见的解决方案。
猜你喜欢
  • 2022-01-12
  • 2018-04-07
  • 1970-01-01
  • 2014-03-30
  • 2014-06-18
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多