Supuestos para .equals () en Java - comparar instancia de objeto o estado de objeto

Paul Kubik:

Lo reconocen exactamente método .equals () en el supuesto de: instancia del objeto o estado del objeto?

Estoy aprendiendo Hibernate y JPA. Cuando quiero usar asociación OneToMany bidireccional hay un problema porque cuando anular método igual y HashCode con todas las variables se convierten en bucle infinito. La única manera de resolver el problema que veo es no utilizar en uno de la clase de la otra instancia de clase en equals () y hashCode (). Así que estoy considerando si es compatible con los supuestos en Java para .equals () método.

Por ejemplo, tenemos una clase Persona (). Yo sé que el correo electrónico es un valor único. Así que se puede comparar persona por correo electrónico y entonces sé que se trata de la misma persona (ejemplo), pero no sé si el estado del objeto es el mismo (campos Nombre y Apellidos pueden diferir). Por lo tanto, es mi pregunta, ¿qué debemos esperar durante Comparar con objeto .equals ()?

@Entity
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String email="";
    private String firstName = "";
    private String lastName = "";

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof Person)) return false;
        Person person = (Person) o;
        return email.equals(person.email);
    }

    @Override
    public int hashCode() {
        return Objects.hash(email);
    }
}
mate00:

Cuando pienso en la implementación equalsde una clase dada Me hago una pregunta: ¿qué hace que un objeto sea único? Lo que difiere instancia de uno Persondiferente de otro? Luego uso que las propiedades de la ejecución equals. En su caso, o en el caso de @Entitylos objetos con @XtoYrelación, en mi opinión, no hay necesidad de incluir esta relación equals.

Si, por ejemplo, tengo una Personque tiene una relación con Departmentel hecho de que una persona pertenece a algunos departamentos no hace que su único. Es su nombre / apellido / PESEL o correo electrónico y así sucesivamente, y eso es lo que me gustaría incluir en equals.

Espero que esto ayude.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=231143&siteId=1
Recomendado
Clasificación