代码之家  ›  专栏  ›  技术社区  ›  madewulf

HibernateTransactionManager:是否可以在不回滚的情况下引发异常?

  •  2
  • madewulf  · 技术社区  · 15 年前

    在春天,我已经声明了一个方法是事务性的。我使用HibernateTransactionManager。现在,我想从这个方法中抛出一个异常,但我不希望Hibernate回滚事务。是否可以指定导致回滚的wich异常?

    1 回复  |  直到 15 年前
        1
  •  3
  •   skaffman    15 年前

    Spring的默认回滚行为是:

    […]春天 框架的事务基础结构 默认情况下,代码将只标记A 案例中用于回滚的事务 运行时,未选中的异常;即 是,当引发的异常是 实例或子类 运行时异常。(错误也将- 默认情况下-导致回滚。) 已检查引发的异常 从事务方法 导致正在回滚的事务 回来。

    不过,您可以覆盖它。这取决于您使用了什么机制来划分事务(例如注释、XML等),但是异常回滚的要点在 spring docs here .

    例如,如果使用 @Transactional 注释,然后可以指定 rollbackFor 属性指定哪些异常导致回滚。