应该嵌入jpa类实现equals和hashCode吗?
问题描述:
比方说,我有以下情形:应该嵌入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?
}
应该命名类实现顺序名称类的equals和hashCode是人正常工作相等?
对于将用作EmbeddedId的Embeddable对象是必须的。但在这个例子中,我使用了代理键。
答
我不相信JPA曾经要求你实现equals和hashcode。 Hibernate已经习惯了,但最近对这些文档的回顾表明,这不再是一项要求。
但是当然,实现散列码和等号总是个好主意。
你确定“名字”会是真正独一无二的吗?不难想象两个人有相同名字的情况。 – 2011-01-21 18:54:50