一尘不染

对具有生成ID的实体实施equals()时的最佳做法是什么

hibernate

如果我有一个包含A,B,C,D列的表
A:自动生成的ID(PK)
B和C:组合必须是唯一的(这些是从业务角度实际定义身份的列)
D:其他一些列

现在,如果我将基于此表(例如,在Java中)创建业务对象,那将是equals()方法的更好实现:

  1. 根据A定义相等
  2. 根据B和C定义相等

或者,我选择这两者中的哪一个都不重要。


阅读 295

收藏
2020-06-20

共1个答案

一尘不染

绝对是B和C,因为您希望equals()合同在实体持久之前仍然有效。你说自己:

这些是从业务角度实际定义身份的列

如果是这样,则equals()应该使用该逻辑。数据库密钥是数据库的关注点,应该与您的业务层无关。

并且不要忘记在中使用相同的属性hashcode()

2020-06-20