1.新建一个帮助java类,例如
package com.ibm.banking.irmp.common;
import java.io.Serializable;
import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
@MappedSuperclass
public abstract class OptimisticLockSupportEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 4575574127009076214L;
public final static String CONFLICT_MESSAGE_ID = "COMMSW0005"; //自定义错误信息(当用户和另一个用户同时操作时会报错,然而提供这个错误)
private String updateUserCode;// 最近更新人
private long lockVersion; //乐观锁的版本号(当用户操作时候就自动更新版本号(如1.2.3。。。)类已经封装好了自动更新版本号,无需手动更新,直接用即可)
@Version
public long getLockVersion() {
return lockVersion;
}
public void setLockVersion(long lockVersion) {
this.lockVersion = lockVersion;
}
public String getUpdateUserCode() {
return updateUserCode;
}
public void setUpdateUserCode(String updateUserCode) {
this.updateUserCode = updateUserCode;
}
}
2.在对某张表操作的时候,即在那个对应的实体类中继承上面的类即可(这张表中要添加几个字段:updateUserCode,lockVersion)
3.在action中,以前是怎么用的就还是怎么用,该调用方法的调用方法,不变
4.在jsp中,要隐藏域一个参数:版本号(lockVersion),无论用户怎么操作(增删改查都必须提交版本号,这样系统会自动判断是否有人同时进行同一操作,如果是同一操作,后台action中会捕捉到异常,即OptimisticLockSupportEntity类中定义的,然后在页面中判断是否有异常,如果有异常则提示“该操作已经被锁定,请稍后刷新在试”)