假设我们在 Java 项目中有这样的类:
@Entity
class Person {
@Id
String internalId;
@OneToMany
Set<Profession> profession;
}
@Entity
class Profession {
@Id
String id;
String professionName;
Integer yearsOfPractise;
}
在业务逻辑中,每个人的professionName
必须是唯一的。
仅考虑帐户的professionName
字段并忽略其他字段,@override
equals
是否正确?
一方面,如果从业务逻辑角度处理此类,则此类 equals 会很方便。但是,当必须从不同的角度处理此类时,这样的 equals 可能是完全错误且不方便的。
如何决定?
最佳答案
当然,通过这种方式,您使用的是业务 ID,而不是可能由 jpa 供应商生成的 ID,因此,管理的实体与非管理的实体相同。
例如,如果我们创建一个实体,其中 id 由数据库生成并保存它,则以下内容不会出现错误:
Entity entity = new Entity();
Entity savedEntity = entityRepository.save(entity); // CrudReporitory
assertFalse(entity.equals(savedEntity));
大多数情况下这不是我们想要的。更多详情我推荐this article .
关于java - equals 是否应该承受应用程序的业务逻辑的负担?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54843257/