Should embeddable jpa class implement equals and hashCode?

为君一笑 提交于 2019-12-07 04:30:43

问题


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 properly?.

For an Embeddable object that will be used as an EmbeddedId is a must. But in this example I'm using surrogate key.


回答1:


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.



来源:https://stackoverflow.com/questions/4762573/should-embeddable-jpa-class-implement-equals-and-hashcode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!