当前位置: 首页 > 知识库问答 >
问题:

LocalDateTime精度问题:装配我的equals和hashCode方法

闻人栋
2023-03-14

我在模型中将审计字段设置为LocalDateTime类型。

我还将Lombok用于<code>equals</code>和<code>hashCode</code>实现。

在persist(用ID)和fetch(用ID)之间,精度是宽松的。

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

最后,我在我的基本实体中手工实现了这些方法(如opp。到使用Lombok)和截断的< code>LocaDateTime在那里。

问题:如何全局设置LocalDateTime精度(系统、Spring上下文或其他)?

共有1个答案

壤驷经国
2023-03-14

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

在您的情况下,您需要< code>Clock.tickSeconds。引用Javadoc:

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

例如,要捕获当前时刻,将零小时-分钟-秒的UTC偏移量截断为整秒:

Instant instant = Instant.now( Clock.tickSeconds() ) ;
 类似资料:
  • 菜单栏: Code —> Generate —> equals() and hashCode() 右键菜单:Generate —> equals() and hashCode() 快捷键: Mac: command + N Windows\/Linux: Alt + Insert —> equals() and hashCode()

  • 如果你有如下需求,你必须重载 equals() 和 hashCode() 方法: 想把持久类的实例放入 Set 中(当表示多值关联时,推荐这么做),而且 想重用脱管实例 Hibernate 保证,仅在特定会话范围内,持久化标识(数据库的行)和 Java 标识是等价的。因此,一旦我们混合了从不同会话中获取的实例,如果希望 Set 有明确的语义,就必须实现 equals() 和 hashCode()。

  • 问题内容: 我应该如何实施和在Java下面的类? 问题答案: 在Eclipse中,右键单击->源->生成hashCode(),然后equals()给出以下信息: 我已选择代码作为唯一字段

  • 我想知道我是否应该在类中定义和方法,如下所示?

  • 问题内容: and方法必须一致,这意味着当两个对象根据方法相等时,它们的方法应返回相同的哈希值。 如果我们不重写hashCode()方法,则Java将返回唯一的哈希码。 为什么取消注释该行会导致编译错误? 如果对象的哈希码不相等,即使默认哈希码有所不同,为什么它们显示为相等? 问题答案: 平等仅由方法equals()确定。并且hashCode()方法可用于其他情况,例如Map或Set。实际调用eq

  • 问题内容: 我在很多地方读到说 Java中的覆盖方法时,也应该覆盖方法,否则就是“违反合同”。 但是到目前为止,如果我仅覆盖equals方法,而不覆盖hashCode方法,则不会遇到任何问题。 什么合同 为何我在违反合同时没有遇到任何问题?如果没有重写hashCode方法,在哪种情况下会遇到问题? 问题答案: 你将遇到的问题是集合,其中元素的唯一性是根据和计算的,例如。 顾名思义,它依赖于哈希表,