【发布时间】:2010-12-28 01:03:02
【问题描述】:
我有一个简单的类角色:
@Entity
@Table (name = "ROLE")
public class Role implements Serializable {
@Id
@GeneratedValue
private Integer id;
@Column
private String roleName;
public Role () { }
public Role (String roleName) {
this.roleName = roleName;
}
public void setId (Integer id) {
this.id = id;
}
public Integer getId () {
return id;
}
public void setRoleName (String roleName) {
this.roleName = roleName;
}
public String getRoleName () {
return roleName;
}
}
现在我想重写它的方法equals和hashCode。我的第一个建议是:
public boolean equals (Object obj) {
if (obj instanceof Role) {
return ((Role)obj).getRoleName ().equals (roleName);
}
return false;
}
public int hashCode () {
return id;
}
但是当我创建新的 Role 对象时,它的 id 为空。这就是为什么我对 hashCode 方法的实现有一些问题。现在我可以简单地返回 roleName.hashCode () 但如果角色名称不是必需字段怎么办?我几乎可以肯定,通过返回其中一个字段的 hashCode 无法解决的更复杂的示例并不难。
所以我希望看到一些相关讨论的链接,或者听听您解决此问题的经验。谢谢!
【问题讨论】:
标签: java hibernate jpa jakarta-ee