我知道当覆盖我的持久性实体的hashcode()
和equals()
时,我不应该包含ID,并且只包含唯一标识该对象的有意义的属性。
但是Hibernate用于乐观并发控制的version
字段呢?我应该跳过它,就像ID一样吗?如果让我们说new User(name='John', version=1).equals(new User(name='John',version=2))
怎么样,它会不会混淆Hibernate OCC呢?
答案 0 :(得分:3)
建议您使用Business key equality实现equals()和hashCode()。业务键等式意味着equals()方法仅比较形成业务键的属性。它是识别我们在现实世界中的实例的关键(自然候选键)
所以你应该不在equals()
hashcode()