假设我有以下情况:
@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类是否应该在Name类上实现equals和hashCode以使Person等于正常工作?
对于将用作EmbeddedId的Embeddable对象是必须的.但在这个例子中我使用的是代理键.
最佳答案
我不相信JPA要求你实现equals和hashcode. Hibernate曾经使用过,但是最近对文档的评论表明这不再是必需的.
原文链接:https://www.f2er.com/java/437781.html但当然,实现hashcode和equals总是一个好主意.