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!也没有例外)