【发布时间】:2011-09-25 22:58:05
【问题描述】:
使用 JPA,我偶然发现了 equals() 和 hashcode() 的问题,尤其是对于尚未持久化的新创建实体。
我在stackoverflow中找到了以下答案:
Should I write equals() methods in JPA entities?
这个答案谈到了休眠会话。我不使用 Hibernate(但使用 EclipseLink),而且我不了解 JPA 提供程序的实现细节,例如这些“会话”。
我的问题是,就 JPA 而言,Hibernate 会话是什么?或者,更具体地说:如果我不覆盖 equals() 和 hashcode(),在这种情况下,我会遇到表示同一实体的两个对象(相同的业务密钥,如果存在)不“相等”的问题(这意味着equals() 返回 false)?
使用相同的 EntityManager 实例是否足以避免这些问题(这意味着,“session”和“EntityManager”可以在这种情况下等效使用吗?)
注意:我没有对所有表都可用的业务密钥,因此无法应用在equals() 和hashcode() 中使用业务密钥属性的解决方案。
【问题讨论】: