当前位置: 首页 > 知识库问答 >
问题:

Spring服务在异常后不回滚事务

袁宜
2023-03-14

我正在使用Spring JpaRepository在我的一个应用程序屏幕中实现CRUD。作为其中的一部分,我正在开发一个功能,用户可以保存所有汽车实体或没有(应该回滚)到数据库。我不确定如何使用Spring Boot、Spring Rest和Spring JPA实现此功能。

下面是我的源代码。

@Repository
interface CarRepository extends JpaRepository<Car, Integer> { }

@Service
class CarService {

    @Autowired
    CarRepository repo;

    @Transactional(rollbackFor=RuntimeException.class)
    public List<Car> saveAllOrNone(List<Car> cars) {
        for(Car car: cars) {
            repo.save(car);
        }
    }
}

除此之外,我还得到了一个类似UOWManager事务处理失败的异常:嵌套异常是com.ibm.wsspi.uow.uowException:javax.transaction.rollbackException

请帮帮我。谢谢你。

共有1个答案

裴硕
2023-03-14

尽管已经很晚了,我还是想把答案贴出来,因为有人会发现这很有用。我通过在spring boot应用程序中使用这里的资源实现JPA事务管理器来修复这个错误

 类似资料:
  • 这很好,但并不总是在代码中抛出运行时异常。因此,我挖掘并发现如下所示的rollbackFor; 现在,我必须更改所有代码,以使用RollBackfor更改@Transactional。但是还有其他方法可以将所有@transaction advice属性更改为rollbackFor=exception.class吗?

  • 问题内容: 我在下面使用HIbernate和Spring和JPA。当引发PersistenceException时,我想捕获它并返回错误消息,以便它不会传播到调用者。 但是我得到一个异常,说我需要在异常之后回滚事务,但是当我捕获到异常并且不想重新抛出该异常时,如何回滚它呢? 问题答案: 似乎没有办法回退由Spring ORM管理的失败事务。问题中显示的代码是服务类。将其持久性例程提取到单独的DAO

  • 我有一个类,它有一个方法,该方法调用另一个服务上的另一个方法。大概是这样的: 我预计一个实体将被插入,但是如果任何嵌套事务抛出异常插入将拒绝,即使这个异常也是在处理的。 我可以用注释。但它会胜过表演。

  • 我在tomcat服务器中使用具有多个数据源配置的JTA原子事务。有时我会遇到以下异常: JTA事务意外回滚(可能是由于超时);嵌套的异常是javax。交易回滚异常:事务被设置为仅回滚 出现这种异常的原因是什么?