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

Ale*_*yda 6 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呢?

Yog*_*rni 4

建议您使用业务键相等来实现 equals() 和 hashCode()。业务键相等意味着 equals() 方法仅比较构成业务键的属性。它是一个可以识别我们在现实世界中的实例的键(自然候选键)

所以你应该在equals() hashcode()

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