/**
* 同时保存一个对象,需要有一个等待或退出
*/
public static final long SAVE_OBJ_ERROR_CODE_WAIT = -9L;
/**
* 保存正在保存的对象Id,保存完成后remove,如果保存前发现有相同Id的对象在该map中则说明上一次保存还未结束或有其他人正在修改同一对象,需要等待其完成后才继续操作
*/
private static final Map idMap = new ConcurrentHashMap();
public long saveObj(Obj obj)
{
String id = obj.getId()==null?"":String.valueOf(obj.getId());
if (idMap.containsKey(id))
{
logger.error(obj.getName() + "(" + id + ")正在保存中,返回该次操作.");
return SAVE_OBJ_ERROR_CODE_WAIT;
}
else
{
idMap.put(id, id);
}
try
{
return objdao.saveObj(obj);
}
finally
{
idMap.remove(id);
}
}