我正在开发一个新应用程序,我需要一些关于如何实现 equals 方法和 hashCode 方法的帮助。我一直在阅读关于 SO 的许多问题,并且我还阅读了几篇将我引向这个问题的博客文章。
首先是一点技术信息:我正在使用 JPA (EclipseLink),并且该应用程序适用于 Java EE。
在我读完之后,你应该对 hashCode 和 equals 使用不可变的值,但由于类中的字段通常是可修改的,你不能使用它们。您也不能使用主键 (JPA),因为在持久化之前您不会拥有主键。所以我在想的是使用UUID。对于equals和hashCode,但我以前从未这样做过,所以我想知道是否有人认为这很糟糕(为什么?)和可能的缺点(除了获得相同ID的微小机会)?使用 UUID 并在构造函数中分配它将从一开始就为所有对象提供业务 ID。我将使其不可变并将其保存到数据库中。
这种方法不好吗?