【问题标题】:How to keep time in Spring Data JPA如何在 Spring Data JPA 中保持时间
【发布时间】:2017-03-15 02:16:31
【问题描述】:

如何在 Spring Data JPA 中保持时间(无日期)?现在我把它保存在字符串中。例如:“10:45”。但是通过这种方式,我无法在时间之间返回值,例如: repository.findTimeBetween(String startTime, String endTime)

【问题讨论】:

  • 您是只想使用 String 还是可以使用 LocalTime 或 Unix 时间戳等其他内容?
  • 我使用 jHipster,它不允许 LocalTime。但我认为我可以手动使用它。 jhipster.github.io/jdl
  • Patres:您使用的是哪个 Java 版本?或者你对使用 joda 时间库有什么限制吗?看看我的例子
  • 我使用 Java 8,是的,我看到了您的示例。非常感谢!

标签: database spring spring-data-jpa


【解决方案1】:

如果将时间作为字符串存储在数据库中,则不能使用它进行比较,而需要将时间值存储为数字类型。

使用 Java8:

使用java.time.LocalTime API 并将时间值作为integer(大整数)类型存储在数据库中。然后,您可以使用repository. findByStartDateBetween(time1,time2)

LocalTime 的下面两个 API 方法对于 long 到 LocalTime 和 String 到 LocalTime 对象的转换非常有用。

静态 LocalTime ofSecondOfDay(long secondOfDay)

从第二天的值中获取 LocalTime 的实例。

静态本地时间解析(CharSequence 文本)

从 10:15 等文本字符串中获取 LocalTime 的实例。

可以参考APIhere

不使用 Java8:

如果你没有使用 Java8,你可以使用 Joda 时间库。

您可以参考here

【讨论】:

  • 我不知道我是否理解。您是否建议像这样将其保存在 Integer 中:@Column(name = "start_time") private LocalTime startTime;当我需要时间时,我应该削减 LocalTime?
  • 声明为:@Column(name = "start_time") private long startTime;
  • 当你需要时间回来时,你需要通过:LocalTime locatime = LocalTime.ofSecondOfDay(startTime);参考上述Java8链接中的API。
  • 谢谢!现在我明白了
猜你喜欢
  • 2015-08-08
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2021-12-16
  • 1970-01-01
  • 2015-03-03
  • 2015-06-13
相关资源
最近更新 更多