在hibernate常常用set来做onetomany或manytomany。
而set本身是不允许有重复的对象存在。
上面代码运行只后输出
true 1
如果我们想把什么的两个对象都设到set中必须对Linkman对象中equals进行重写.
再运行上面的代码就输出:
false 2
其实就对equals比较的规则进行了重写
而set本身是不允许有重复的对象存在。
AgentLinkman man = new AgentLinkman();
AgentLinkman man1 = new AgentLinkman();
man.setLinkman("linkman");
man.setDeleted(false);
Date date = new Date();
man.setCreateTime(date);
man.setEmail("email");
man1.setLinkman("linkman1");
man1.setImET("ddd");
man1.setDeleted(false);
man1.setCreateTime(date);
man1.setEmail("email1");
System.out.println(men.equals(men1));
Set set = new HashSet();
set.add(man);
set.add(man1);
System.out.println(set.size());
上面代码运行只后输出
true 1
如果我们想把什么的两个对象都设到set中必须对Linkman对象中equals进行重写.
//对equals进行重写
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj != null && obj instanceof BaseEntity) {
AgentLinkman newObj = (AgentLinkman) obj;
return getId() == newObj.getId()&&getLinkman().equals(newObj.getLinkman());
}
return false;
}
//对hashCode进行重写
public int hashCode() {
int result = 17;
result = (37 * result) + ((this.id != null) ? this.id.hashCode() : 0);
return result;
}
再运行上面的代码就输出:
false 2
其实就对equals比较的规则进行了重写