我的 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);
}
我想避免死锁问题。
如果没有看到汽车和品牌的域对象,就很难发表评论。但我不明白为什么你必须明确地删除汽车。在事务关闭期间,Hibernate 将发出刷新并提交。