Hibernate:我应该将'version'字段包含在hashcode()和equals()方法中

时间:2011-09-10 17:55:25

标签: hibernate version hashcode optimistic-locking optimistic-concurrency

我知道当覆盖我的持久性实体的hashcode()equals()时,我不应该包含ID,并且只包含唯一标识该对象的有意义的属性。 但是Hibernate用于乐观并发控制version字段呢?我应该跳过它,就像ID一样吗?如果让我们说new User(name='John', version=1).equals(new User(name='John',version=2))怎么样,它会不会混淆Hibernate OCC呢?

1 个答案:

答案 0 :(得分:3)

建议您使用Business key equality实现equals()和hashCode()。业务键等式意味着equals()方法仅比较形成业务键的属性。它是识别我们在现实世界中的实例的关键(自然候选键)

所以你应该equals() hashcode()

中包含版本属性

参考:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/persistent-classes.html#persistent-classes-equalshashcode