首页 > Java > java教程 > 正文

如何在不破坏身份的情况下为 JPA 实体实现 hashCode() 和 equals()?

Susan Sarandon
发布: 2024-11-26 04:05:07
原创
637 人浏览过

How to Implement hashCode() and equals() for JPA Entities Without Breaking Identity?

JPA hashCode() / equals() 困境:JPA 中立视角

为 JPA 实现 hashCode() 和 equals()实体可能会带来一些挑战,特别是在遵守合同和身份检测方面。本文从 JPA 实现中立的角度(特别是考虑到 EclipseLink)讨论该问题,探讨了可用的选项及其含义。

可能的权衡实现

  1. Object.hashCode() 和Object.equals(): 此默认实现可确保合约一致性,但无法识别相同的对象,并可能导致分离实体出现问题。
  2. hashCode()/equals() by Primary Key: 遵守 hashCode()/equals() 契约,但由于临时主键而破坏了分离实体的身份
  3. hashCode()/equals() by Business-Id: 提供正确的身份,但仍可能违反合同并导致外键问题。

问题和建议

问题1: 是否有任何选项或权衡被忽略?

答案: 引用的文章“不要让 Hibernate 窃取您的身份”建议在实例化简化了对象标识并降低了代码复杂性。

问题2:推荐哪个选项?

答案:文中建议的解决方案建议在实例化时分配对象ID,而不是依赖JPA实现。这种方法可确保一致性并简化身份管理。

以上是如何在不破坏身份的情况下为 JPA 实体实现 hashCode() 和 equals()?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板