He estado tratando de razonar sobre la mejor manera de manejar si generalmente es una buena práctica implementar hashcode y es igual a entidades (quiero decir entidad en el sentido general pero en la mayoría de los casos será una entidad JPA).Para iguales y hashcode o no en clases de entidad, esa es la pregunta
En el capítulo 24 del manual de hibernación http://docs.jboss.org/hibernate/core/3.3/reference/en/html/best-practices.html dice esto ...
identificar las claves naturales para todas las entidades , y asignarlos usando . Implemente equals() y hashCode() para comparar las propiedades que componen la clave natural.
Tiene sentido que los .equals y .hashcode incluyan solo estas claves naturales, pero ¿qué ocurre si tiene más de una instancia de la misma entidad (el mismo id natural y el mismo hashcode)? Parece que esta práctica podría tener implicaciones sutiles en otras partes de su aplicación. ¿Alguien ha intentado esto antes a gran escala?
¿Qué sentido tiene que ser igual por la clave pero no es igual por las propiedades? Es como ser igual por referencia pero no por valor. –
nuevas entidades no tendrán una clave principal (si está utilizando sustitutos, que es la forma estándar). Entonces, los iguales no funcionarían para entidades nuevas si está usando la clave para comparar. –
qué método usas para las clases persistentes 'equals()' y 'hashcode()' métodos entonces? Debe hacerse una elección para estos ya que serán invocados por el código Collection o Hibernate. –