我知道当覆盖 hashcode() 时和 equals()在我的持久实体中,我不应该包含 ID,而只包含唯一标识对象的有意义的属性。
但是version呢? Hibernate 用于乐观并发控制的字段?我也应该跳过它,就像 ID 一样?如果让我们说 new User(name='John', version=1).equals(new User(name='John',version=2)) 会怎样? ,无论如何它不会混淆Hibernate OCC吗?
请您参考如下方法:
建议您使用业务键相等来实现 equals() 和 hashCode()。业务键相等意味着 equals() 方法只比较构成业务键的属性。它是一个可以在现实世界中识别我们实例的键(自然候选键)
所以你应该不是 在 equals() 中包含 version 属性hashcode()
引用:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/persistent-classes.html#persistent-classes-equalshashcode




