6

hashcode()永続エンティティをオーバーライドするときequals()は、ID を含めず、オブジェクトを一意に識別する意味のあるプロパティのみを含める必要があることを知っています。しかし、Hibernate による楽観的同時実行制御versionに使用されるフィールドはどうでしょうか? IDと同じように、スキップする必要がありますか?とにかくHibernate OCCを混乱させませんか?new User(name='John', version=1).equals(new User(name='John',version=2))

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 に答える