Domanda

Lo so quando si estende hashcode() e equals() Delle mie entità persistenti non dovrei includere ID e includere solo le proprietà significative che identificano in modo univoco l'oggetto. Ma per quanto riguarda version campo che viene utilizzato per il Controllo ottimista di concorrenza di Hibernate? Dovrei saltarlo anche io, proprio come ID? E se diciamo new User(name='John', version=1).equals(new User(name='John',version=2)), non confonderà in modo ibernato OCC?

È stato utile?

Soluzione

Si consiglia di implementare Equals () e HashCode () utilizzando l'uguanta uguaglianza chiave. Uguaglianza chiave aziendale significa che il metodo equals () confronta solo le proprietà che formano la chiave di business. È una chiave che identificherebbe la nostra istanza nel mondo reale (una chiave del candidato naturale)

Quindi dovresti non includere la proprietà della versione in equals() hashcode()

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top