可以在 Play Framework 中的 @Entity Model 类上实现 equals() 和 hashCode() 吗?
Posted
技术标签:
【中文标题】可以在 Play Framework 中的 @Entity Model 类上实现 equals() 和 hashCode() 吗?【英文标题】:Is it okay to implement equals() and hashCode() on @Entity Model classes in Play Framework? 【发布时间】:2013-01-04 00:42:46 【问题描述】:我的 Play 应用程序中有一个 @Entity
-annotated Model
类,我将其填充到 Set
中,以确保在保存到数据库之前的唯一性。由于对象尚未保存,因此它们没有键值。所以必须根据它们的属性进行比较。
我查看了JPABase
中的equals()
实现,如果它们还没有键,它似乎显式地使所有实体对象不相等。
所以,我的问题:
-
可以在我的
Model
子类中实现equals()
和hashCode()
吗?
如果是这样,最好/正确的方法是什么?是否应该拨打super.equals()
,结果如何处理?
【问题讨论】:
【参考方案1】:我不建议在应用程序模型类中实现equals
或hashCode
。唯一性最终应该由数据库来保证。从应用程序的角度来看,唯一性几乎总是强加于某个领域,例如用户名或电子邮件等。我从未遇到过通过hashCode
或equals
方法对整个对象计算数据实体唯一性的情况。
【讨论】:
以上是关于可以在 Play Framework 中的 @Entity Model 类上实现 equals() 和 hashCode() 吗?的主要内容,如果未能解决你的问题,请参考以下文章
可以在 Play Framework 中的 @Entity Model 类上实现 equals() 和 hashCode() 吗?
Play Framework:如何不查看文件夹以了解 Play Framework 中的更改