Hibernate 重写equals 和hashCode
重写equals
public boolean equals(Object obj){
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(password!=other.password) {
return false;
}
if(name != null && other.name != null) {
if(!name.equals(other.name)) {
return false;
}
}
return true;
}
重写hashCode
public int hashCode(){
int result;
result = getName().hashCode();
result = 29 * result + getPassword().hashCode();
return result;
}
测试
public class equalsandhashcode {
public static void main(String[] args) {
Configuration cfg = null;
SessionFactory sf = null;
Session session = null;
Transaction ts = null;
try {
cfg = new Configuration().configure();
sf = cfg.buildSessionFactory();
session= sf.openSession();
ts = session.beginTransaction();
user user1 =(user) session.get(user.class,17);
session.evict(user1);
user user2 = (user) session.get(user.class,17);
System.out.println(user1 == user2);
System.out.println(user1.equals(user2));
ts.commit();
} catch (HibernateException e) {
e.printStackTrace();
if(ts !=null){
ts.rollback();
}
}finally {
session.close();
sf.close();
}
}
}
结果