hibernate 中的set

在hibernate常常用set来做onetomany或manytomany。
而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比较的规则进行了重写

你可能感兴趣的:(Hibernate)