gpt4 book ai didi

java - 是否应该在 equals 和 hashCode 中考虑 JPA 实体的 id 字段?

转载 作者:太空狗 更新时间:2023-10-29 22:50:44 25 4
gpt4 key购买 nike

我在使用 JPA2 和 EclipseLink 为数据库应用程序编写测试时遇到问题:

我将一些实体添加到数据库中,稍后检索它,并想将它与具有我期望的值的实例进行比较,以确认添加是否按我预期的方式工作。

首先我写了类似的东西

assertEquals(expResult, dbResult);

失败了,因为我真的不知道 id 的值字段,由数据库生成,因此 dbResult不同于 expResult我用 new 创建的并手动填充。

我看到两个选项:

  • 或者我删除 id来自 equals 的字段和 hashCode因此比较仅基于“实际值”。不过,我不知道这是否会导致数据库或其他地方出现问题。

  • 或者我编写测试以明确检查除 id 之外的每个字段手动。

我该怎么办?

最佳答案

你可能会发现很多关于这个的争议。我的立场是绝对不要在应用程序中对任何内容使用数据库主键。它应该是完全不可见的。通过其他一些属性或属性组合来识别应用程序中的对象。

在“测试持久性操作”方面,您真正想要的可能是检查字段是否已正确保存和加载,以及是否在您保存主键时为其分配了一些值。这可能根本不是 equals 方法的工作。

关于java - 是否应该在 equals 和 hashCode 中考虑 JPA 实体的 id 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com