6

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

4

1 回答 1

4

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

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

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

于 2011-09-12T06:24:12.113 回答