Index: forgon-core/src/main/java/com/forgon/serialnumber/service/SerialNumManagerImpl.java =================================================================== diff -u -r12331 -r16472 --- forgon-core/src/main/java/com/forgon/serialnumber/service/SerialNumManagerImpl.java (.../SerialNumManagerImpl.java) (revision 12331) +++ forgon-core/src/main/java/com/forgon/serialnumber/service/SerialNumManagerImpl.java (.../SerialNumManagerImpl.java) (revision 16472) @@ -60,18 +60,28 @@ if (StringUtils.isNotBlank(type)) { - String sql = "select sn from SerialNum as sn where sn.type = '" + type + "'"; + String sql = "where po.type = '" + type + "'"; - Query query = objectDao.getHibernateSession().createQuery(sql); - - if (withUpdateLock){ - query.setLockMode("sn",LockMode.UPGRADE); // 加锁 + Object object = null; + if(withUpdateLock){ + object = objectDao.getBySql_ForUpdate(SerialNum.class.getSimpleName(), sql); + }else{ + object = objectDao.getBySql(SerialNum.class.getSimpleName(), sql); } - List list = query.list();// 执行查询,获取数据 - if (list != null && list.size() >= 1) { - serialNum = (SerialNum) list.get(0); + if(object != null && object instanceof SerialNum){ + serialNum = (SerialNum)object; } + //Query query = objectDao.getHibernateSession().createQuery(sql); + +// if (withUpdateLock){ +// query.setLockMode("sn",LockMode.FORCE); // 加锁 +// } +// +// List list = query.list();// 执行查询,获取数据 +// if (list != null && list.size() >= 1) { +// serialNum = (SerialNum) list.get(0); +// } } return serialNum; } @@ -188,6 +198,7 @@ serialNumObj.setSerialNumber("" + (num + PREFENTCH_SIZE)); objectDao.saveOrUpdate(serialNumObj); objectDao.flush(); + vo.setSerialNum(num - 1); vo.setCount(PREFENTCH_SIZE); } }