Должен ли встраиваемый класс jpa реализовывать equals и hashCode? - PullRequest
5 голосов
/ 21 января 2011

Допустим, у меня есть следующий сценарий:

@Entity
public class Person {
    @Id
    private Long id; //Surrogate key

    @Embedded
    private Name name; //Natural key

    public int hashCode() {
        ... //based on natural key Name
    }
    public boolean equals(Object obj) {
        ... //based on natural key Name
    }
}

@Embeddable
public class Name {
    private String firstName;
    private String middleName;
    private String lastName;

    //Should I implement equals/hashCode baseed on the three fields?
}

Должен ли класс Name реализовывать equals и hashCode для класса Name для правильной работы Person??

Для объекта Embeddable, которыйбудет использоваться как EmbeddedId.Но в этом примере я использую суррогатный ключ.

1 Ответ

5 голосов
/ 21 января 2011

Я не верю, что JPA когда-либо требует, чтобы вы реализовали equals и hashcode.Hibernate раньше, но недавний обзор документации показывает, что это больше не является обязательным требованием.

Но, конечно, всегда полезно реализовать хеш-код и равнозначные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...