Sé que al anular hashcode()
y de mis entidades persistentes no debería incluir ID y solo incluir las propiedades significativas que identifican el objeto de manera única . ¿Pero qué pasa con el campo version
que se utiliza para el control de concurrencia optimista de Hibernate? ¿Debería omitirlo también, al igual que ID? ¿Qué pasa si digamos new User(name='John', version=1).equals(new User(name='John',version=2))
, de todos modos no confundirá Hibernate OCC?Hibernate: ¿Debo incluir el campo 'versión' en los métodos hashcode() y equals()
5
A
Respuesta
3
Se recomienda que implemente equals() y hashCode() utilizando Business key equality. La igualdad de clave empresarial significa que el método equals() compara solo las propiedades que forman la clave comercial. Es una clave que podría identificar nuestra instancia en el mundo real (una clave candidata natural)
Por lo que debe no incluir la propiedad de versión en el equals()
hashcode()
Cuestiones relacionadas
- 1. ¿Cómo hibernate usa equals() y hashCode()?
- 2. Generar pruebas unitarias para los métodos hashcode, equals y toString
- 3. Cómo generar métodos equals() y hashcode() usando wsimport en jaxws
- 4. Hibernate equals y proxy
- 5. contrato equals() y hashCode() en Java
- 6. Java: Equals() automático y hashCode()
- 7. make Eclipse equals()/hashCode() use getters
- 8. ¿Por qué equals y hashCode se definieron en Object?
- 9. ¿Debería considerarse el campo id de una entidad JPA en equals y hashCode?
- 10. En Java, ¿por qué deben equals() y hashCode() ser consistentes?
- 11. ¿Cómo puedo obtener checkstyle para omitir los métodos equals() y hashcode() generados por eclipse?
- 12. Generando equals/hashcode/toString usando la anotación
- 13. ArrayList - agregue los "mismos" objetos (same => equals, hashCode), Threads
- 14. Posibles peligros al ignorar algunos campos en equals/hashCode?
- 15. ¿Por qué debería anular hashCode() cuando anulo el método equals()?
- 16. JUnit theory for hashCode/equals contract
- 17. ¿Cuál es el modismo estándar para implementar equals y hashCode en Scala?
- 18. Java equal() y hashCode() basados en campos diferentes?
- 19. Hibernate/JPA es igual a() y hashCode() con Identificador de carga de Lazy Business
- 20. ¿Cómo debo manejar los errores en los métodos de Perl y qué debo devolver de los métodos?
- 21. hashCode y es igual para Collections.unmodifiableCollection()
- 22. versión Hibernate?
- 23. ¿se pueden usar getters en iguales y hashcode?
- 24. ¿Es posible en java hacer algo parecido a Comparator pero para implementar personalizados equals() y hashCode()
- 25. Implementar "tolerant" `equals` y` hashCode` para una clase con miembros de punto flotante
- 26. Implementando equals y hashCode para objetos con referencias circulares en Java
- 27. ¿Cómo detecta Hibernate el estado sucio de un objeto de entidad?
- 28. ¿Por qué Java EE 6 requiere que equals() y hashCode() se implementen para los adaptadores de recursos?
- 29. Cómo implementar hashCode y equivale al método
- 30. ¿Cómo debo mapear long to int en hashCode()?
Sí, me' he leído eso. Pero dado que el campo 'versión' no se menciona allí y teniendo en cuenta su propósito (diferentes valores significan diferentes objetos) lo dudé. Pero Hibernate recomienda no usar 'versión' para nada más en la aplicación. Por lo tanto, cuanto más lo pienso, más me convenzo de que la 'versión 'no debe ** incluirse ** en' equals() 'y' hashcode() '. – wajda