重写对象equals()和hashCode()方法
//hashcode
public int hashCode() {
int result;
result = getName ().hashCode();
result= 18* result + getBirthday().hashCode();
result= 18* result + getAge();
return result;
}
//equals())方法
public boolean equals(Object obj) {
//如果相同,返回true;如果obj为空,则false
if(this == obj) return true;
if(obj == null) return false;
if(!(obj instanceof User)) {return false;}
}
//强转
User other = (User)obj;
if(id!=other.id) {
return false;
}
if(age!=other.age) {
return false;
}
//注意name是字符串,前提是name不为空,以下方法都重写了
if(!name.equals(other.name)){
return false;
}
if(!gender.equals(other.gender)){
return false;
}
if(!birthday.equals(other.birthday)){
return false;
}
测试
try{
sf =HibernateUtil.getSessionFactory();//sessionFactory单态模式
session = sf.getCurrentSession();//保证每个读写线程有唯一的session的实例
ts = session.beginTransaction();
String a = "abc";
String b ="abc";
System.out.println(a == b);
System.out.println(a.equals(b));
String c = "pq";
String d ="pq";
System.out.println(c == d);
System.out.println(c.equals(d));
ts.commit();
结果是:
true true false true