4

我正在开发一个新应用程序,我需要一些关于如何实现 equals 方法和 hashCode 方法的帮助。我一直在阅读关于 SO 的许多问题,并且我还阅读了几篇将我引向这个问题的博客文章。

首先是一点技术信息:我正在使用 JPA (EclipseLink),并且该应用程序适用于 Java EE。

在我读完之后,你应该对 hashCode 和 equals 使用不可变的值,但由于类中的字段通常是可修改的,你不能使用它们。您也不能使用主键 (JPA),因为在持久化之前您不会拥有主键。所以我在想的是使用UUID。对于equals和hashCode,但我以前从未这样做过,所以我想知道是否有人认为这很糟糕(为什么?)和可能的缺点(除了获得相同ID的微小机会)?使用 UUID 并在构造函数中分配它将从一开始就为所有对象提供业务 ID。我将使其不可变并将其保存到数据库中。

这种方法不好吗?

4

1 回答 1

4

IMO UUID 可以正常工作,我建议这样做。

我找不到这种方法的任何缺点,因为达到 2 个相同值的可能性非常小。

于 2012-09-10T13:00:10.617 回答