Should embeddable jpa class implement equals and hashCode?
Let's say I have the following scenario:
@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?
}
Should Name class implement equals and hashCode on Name class in order that Person equals work prope开发者_运维百科rly?.
For an Embeddable object that will be used as an EmbeddedId is a must. But in this example I'm using surrogate key.
I don't believe JPA ever requires you to implement equals and hashcode. Hibernate used to, but a recent review of the docs shows that this is no longer a requirement.
But of course it's always a good idea to implement hashcode and equals.
精彩评论