Должен ли встраиваемый класс jpa реализовывать equals и hashCode?

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

@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 equals работал правильно?.

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

5
задан Alfredo Osorio 21 January 2011 в 18:46
поделиться