【发布时间】:2011-07-08 15:56:18
【问题描述】:
阅读 this article 后,我倾向于不完全覆盖 equals() 和 hashCode()。
在那篇文章的摘要中,关于 no eq/hC at all 列,唯一的后果是我无法进行比较操作,例如:
- contains() 在分离实体的列表中,或
- 比较来自不同会话的相同实体
并期待正确的结果。
但我仍然有疑问,想问问你的经验,完全跳过 equals 和 hashCode 是否是一种不好的做法,以及我现在还不知道的其他后果。
只是另一个信息点,我倾向于使用列表集合而不是集合。我的假设是,在存储在列表中时,我真的不需要覆盖 hashCode 和 equal。
【问题讨论】:
-
之前有人问过这个问题:Should I write equals() methods in JPA entities?。我的回答是:应该实现
hashCode()和equals(),但不使用@Id属性。 (其他人有不同的意见:-)) -
你好!是的,我在发布我的之前就知道你以前的帖子,因为我确实在谷歌上搜索过类似的问题。与我的帖子的不同之处在于,您想知道在不定义 equal() 的情况下这是否可行,我的问题更多是在不定义它们的情况下我会失去什么。对于您帖子中的好答案,更多的是关于如何定义equals()和hashCode()的每种方式的利弊
-
这里有一个很好的总结:burtbeckwith.com/blog/?p=53
-
如果您不想覆盖,那么您可以应用不同的自定义集合/比较器,它们有时会查看整个对象,有时只是查看主键,在适合您的上下文之后。但这也不是免费的午餐..
标签: java hibernate jpa jpa-2.0