Java 并行更新时Hibernate未引发错误

Java 并行更新时Hibernate未引发错误,java,hibernate,parallel-processing,locking,commit,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(ActivitySta

我有一个方法:

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();
它从两个不同的线程开始,两个线程同时获取相同的活动对象,进行更改和更新。如果它们以相同的毫秒启动,我正在等待回滚,因为它们不能同时进行更改


我只希望其中一个进行此提交,然后回滚或返回另一个。但是他们有两次提交。

你为什么说他们都提交了?请注意,当currentActivity关闭或完成时,您不会终止事务。我在它周围有一个try-catch括号,并等待异常,但没有任何结果。我应该执行提交或回滚来终止事务?没有找到任何适合它的方法。如果tx1在tx2到达第3行之前提交-->
返回
(没有关闭tx2!也没有例外)