不必要。共有三个选项:
不要覆盖-因此您将使用实例。当您使用仅附加到会话的实体(因此保证是同一实例)的集合时,这很好。在许多情况下,这(对我而言)是首选方式,因为在覆盖时它需要较少的代码和较少的考虑
覆盖
hashCode()
并equals()
带有业务密钥。那可能是识别实体的属性的子集。例如,对于一个User
好的企业密钥,可能是username
或email
。这被认为是好的做法。覆盖
hashCode()
并equals()
仅使用ID字段。在某些情况下,这很好,尤其是当您具有手动分配的标识符(例如UUID)时。如果您的实体永远不会进入集合,也可以。但是对于进入集合的临时实体(没有标识符),这会引起问题,因此请谨慎使用此选项。正如Seanizer指出的-您应该避免使用它。通常,除非您真的知道自己在做什么(也许将其记录在案),否则总是这样
有关更多详细信息,请参见本文。还要注意,
equals()和
hashCode()是捆绑在一起的,应该在完全相同的字段中实施。



