Hibernate在并行更新时不会抛出错误

时间:2013-11-18 11:00:22

标签: java hibernate parallel-processing locking commit

我有一个方法:

Session ssn = HibernateSessionManager.getCurrentSession();      
Transaction trn = ssn.beginTransaction();

currentActivity = (Activity) ssn.get(Activity.class, currentActivity.getId());  

   if (currentActivity.getState().equals(ActivityStateEnum.CLOSED_COMPLETED)){
 return;
}

currentActivity.setEndTime(getCurrentDate());
currentActivity.setExecutedBy(person.getLogin());
currentActivity.setServerIP(getServerIP());
currentActivity.setState(ActivityStateEnum.CLOSED_COMPLETED);

ssn.saveOrUpdate(currentActivity);

ssn.flush();
trn.commit();

它从两个不同的线程开始,它们同时获取相同的Activity对象,进行更改并更新它。如果它们在相同的毫秒内启动,我正在等待回滚,因为它们无法同时进行更改。

我只希望其中一个进行此提交,并回滚或返回另一个。但他们做了两次提交。

0 个答案:

没有答案