如果我有一个表A,B,C,D的表
A:
自动生成的id(PK)
B& C:组合必须是唯一的(这些是在业务意义上实际定义身份的列)
D:其他一些列
现在,如果我将根据这个表创建业务对象(例如在Java中),那么哪个更好地实现了equals()方法:
>基于A定义平等
>根据B和C定义相等性
或者,我选择的两个是不重要的.
绝对B和C,因为即使在实体持久化之前,您也希望equals()合约有效.你说自己:
these are the columns that actually
define identity in the business sense
如果是这样,那就是equals()应该使用的逻辑.数据库密钥是数据库的关注点,应该与您的业务层无关.
并且不要忘记在hashcode()中使用相同的属性.