ORA-00060:等待资源时检测到死锁 - SpringData Jpa

问题描述 投票:0回答:1

我的 SpringDataJpa 出现死锁 - “ORA-00060:等待资源时检测到死锁”。 当大量查询时就会出现问题。 给定的代码片段有问题吗?

***删除的汽车数量最多不得超过 10 辆

****我无法使用批量删除或原始删除查询,因为我使用 envers 并且要删除的实体必须加载到应用程序上下文中

@Transactional
public Result replaceCarWithGivenBrand(Request request) {

    List<Car> cars = repository.findCarsByBrand(request.getBrand());
    
    deleteOldCars(cars);
    mapAndSaveNewCar(request);
    return Result.UPDATED;
}

private void deleteOldCars(List<Car> cars) {
    repository.deleteAll(cars);
    entityManager.flush();
}

private void mapAndSaveNewCar(Request request) {
    List<Car> cars = new ArrayList<>();
    repository.saveAll(cars);
}

我想避免死锁问题。

oracle hibernate spring-data-jpa
1个回答
0
投票

如果没有看到汽车和品牌的域对象,就很难发表评论。但我不明白为什么你必须明确地删除汽车。在事务关闭期间,Hibernate 将发出刷新并提交。

© www.soinside.com 2019 - 2024. All rights reserved.