Hibernate中PO的equals()和hashCode()方法的覆写方法

equals方法是判断PO是否相等的重要方法,当然覆写equals方法的同时要求也是要覆写hashCode方法的,以下实例了PO中覆写的一般方式.

package test.base;

import java.io.Serializable;

public abstract class UserInfo implements Serializable {

private int hashCode = Integer.MIN_VALUE;

// primary key
private java.lang.String userId;

// fields
private java.lang.String userName;
private java.lang.String userAccount;

public UserInfo() {
}

public UserInfo(java.lang.String userId) {
this.setUserId(userId);
}

public java.lang.String getUserId() {
return userId;
}

public void setUserId(java.lang.String userId) {
this.userId = userId;
//因为hashCode()方法和主键值有关,重新设置主键值时要还原hashCode值.
this.hashCode = Integer.MIN_VALUE;
}

public java.lang.String getUserName() {
return this.userName;
}

public void setUserName(java.lang.String userName) {
this.userName = userName;
}

public java.lang.String getUserAccount() {
return this.userAccount;
}

public void setUserAccount(java.lang.String userAccount) {
this.userAccount = userAccount;
}

public boolean equals(Object obj) {
if (null == obj)
return false;
if (!(obj instanceof test.base.UserInfo))
return false;
else {
test.base.UserInfo mObj = (test.base.UserInfo) obj;
if (null == this.getUserId() || null == mObj.getUserId())
return false;
else
return (this.getUserId().equals(mObj.getUserId()));
}
}

public int hashCode() {
//这样做的目的就是hashCode值只需要计算一次.
if (Integer.MIN_VALUE == this.hashCode) {
if (null == this.getUserId())
return super.hashCode();
else {
String hashStr =
this.getClass().getName()
+ ":"
+ this.getUserId().hashCode();
this.hashCode = hashStr.hashCode();
}
}
return this.hashCode;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值