假设我有以下场景:
@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?
}
在Person equals正常工作的情况下,Name类是否应该实现equals和hashCode?
对于将用作EmbeddedId的可嵌入对象,这是必须的。但在此示例中,我正在使用代理键。