【问题标题】:LocalDateTime precision issue rig my equals and hashCode methodsLocalDateTime 精度问题装配我的 equals 和 hashCode 方法
【发布时间】:2021-11-24 12:20:29
【问题描述】:

我的模型中有 LocalDateTime 类型的审计字段。

我还将 Lombok 用于 equalshashCode 实现。

persist(使用 ID)和 fetch(通过 ID)之间,精度是松散的。


我继续并在编组之前和在持久层(数据库驱动程序)之间来回解组实体之后将其截断为秒(然后是毫秒)......但似乎还有更多。

最后,我在我的基础实体中手动实现了这些方法(与使用 Lombok 的相反)并在其中截断了 LocaDateTime

问题:如何在全局范围内设置LocalDateTime 精度(系统、spring-context 或其他)?

【问题讨论】:

  • 目标到底是什么?您的数据库是否仅限于比 java.time 的微秒/纳秒更粗的分辨率?
  • 目标是在一个地方截断 LocalDateTime(例如到 SECONDS),这样我就不必处理跨系统(Windows、UNIX 等)和持久性的 JVM 差异层(数据库)精度[损失]。

标签: java time localdatetime


【解决方案1】:

Clock

您可以选择为 java.time 类提供备用 Clock

在你的情况下,你想要Clock.tickSeconds。引用 Javadoc:

使用最佳可用系统时钟获取一个时钟,该时钟以整秒为单位返回当前即时滴答。

例如,要捕捉与 UTC 的偏移量为零时分秒截断为整秒的当前时刻:

Instant instant = Instant.now( Clock.tickSeconds() ) ;

【讨论】:

  • 哦,我明白了...每个实例。在我的例子中,日期是由 Spring 的审计 bean 包装器设置的。
猜你喜欢
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
相关资源
最近更新 更多