循环保存数据时出现PessimisticLockException

时间:2019-04-05 05:45:48

标签: java spring hibernate jpa

当尝试通过JPA持久化多个对象时,出现了pesimistlockexception。 这是我的代码供参考

@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public Boolean changeDplListMappingByCustomWatchList(List<Integer> dplIds, Integer customWatchListId,
    ServiceRequestor customServiceRequestor) {

            for(Integer dplId : dplIds) {
                if(dplId != null) {
                    CustomWatchListDplMapping customWatchListDplMapping = new CustomWatchListDplMapping();
                    customWatchListDplMapping.setDplId(dplId);
                    customWatchListDplMapping.setWatchListId(customWatchListId);

                    this.create(customWatchListDplMapping);
                }
            }
    }
    catch(Exception e) {
        LOG.error("Exception occured while changing dpl mapping by custom watchList id", e);
    }

    return true;
}

public void create(Model entity) {
    manager.persist(entity);
    manager.joinTransaction();
}

在第一个实体遍历第二个实体之后,它将引发异常。如果只保存一个实体,那么它会很好用,但是对于多个实体模型,它将引发此异常。

1 个答案:

答案 0 :(得分:0)

默认情况下,悲观锁为1秒钟,因此请在属性文件中进行更改,这将有助于您解锁并可以保存到数据库中