为了账号安全,请及时绑定邮箱和手机立即绑定

如何覆盖休眠中的瞬态对象的哈希码和等于?

如何覆盖休眠中的瞬态对象的哈希码和等于?

DIEA 2023-04-26 16:58:28
我有 3 个实体,学生、年级和班级。代码如下所示。这只是一个样本。学生班public class Student implements Serializable{    private static final long serialVersionUID = 1L;    private String fullName;    private long studentId;    //omit getter/setter column mapped to db    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + ((getFullName() == null) ? 0 : getFullName().hashCode());        result = prime * result + (int) (getStudentId() ^ (getStudentId() >>> 32));        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (obj instanceof Student)            return false;        test other = (test) obj;        if (getFullName() == null) {            if (other.getFullName() != null)                return false;        } else if (!getFullName().equals(other.getFullName()))            return false;        if (getStudentId() != other.getStudentId())            return false;        return true;    }}学校班级:public class SchoolClass implements Serializable{    private static final long serialVersionUID = 1L;    private String className;    private long classId;    //omit getter/setter column mapped to db    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + (int) (getClassId() ^ (getClassId() >>> 32));        result = prime * result + ((getClassName() == null) ? 0 : getClassName().hashCode());        return result;    }所以我检查了 hibernate doc 的 hashcode 和 equals,它对于 DB 中存在的实体来说工作得很好。我遇到的问题是在保存到数据库之前对于新的瞬态实体对象。我使用 HashSet 专门针对 Student 和 SchoolClass 进行了单独测试,如果它尝试添加相同的对象,集合的大小不会增加。
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

感谢@samabcde。他是对的,我错过了!在条件检查上。



查看完整回答
反对 回复 2023-04-26
?
慕少森

TA贡献2019条经验 获得超9个赞

正确吗if (obj instanceof Grade)             return false;?你错过了吗!

查看完整回答
反对 回复 2023-04-26
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信