在Spring中,我已声明一种方法是事务性的。我使用HibernateTransactionManager。现在,我想从这个方法抛出异常,但我不希望hibernate回滚事务。是否可以指定导致回滚的异常?
答案 0 :(得分:3)
Spring的默认回滚行为是:
[...]春天 框架的交易基础设施 默认情况下,代码只会标记a 在这种情况下回滚的事务 运行时,未经检查的异常;那 是,当抛出异常是一个 实例或子类 RuntimeException的。 (错误也会 - 默认情况下 - 导致回滚。) 检查抛出的异常 从事务方法不会 导致交易被滚动 回来。
但你可以覆盖它。这取决于您用于划分事务的机制(例如注释,XML等),但异常回滚内容的要点在spring docs here。
例如,如果使用@Transactional
注释,则可以为注释指定rollbackFor
属性,以指定导致回滚的异常。