可以在 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】:

我不建议在应用程序模型类中实现equalshashCode。唯一性最终应该由数据库来保证。从应用程序的角度来看,唯一性几乎总是强加于某个领域,例如用户名或电子邮件等。我从未遇到过通过hashCodeequals 方法对整个对象计算数据实体唯一性的情况。

【讨论】:

以上是关于可以在 Play Framework 中的 @Entity Model 类上实现 equals() 和 hashCode() 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Play Framework 路由中的变量

可以在 Play Framework 中的 @Entity Model 类上实现 equals() 和 hashCode() 吗?

Play Framework:如何不查看文件夹以了解 Play Framework 中的更改

是否可以在 Play Framework 2.7 中访问动作组合中的路由参数?

Play Framework 2.2.2 中的 OAuth

测试期间可以在 Play Framework 中启用 HTTPS 侦听吗?