HibernateTransactionManager:可以在没有回滚的情况下抛出异常吗?

时间:2009-11-27 10:04:59

标签: java hibernate spring

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

1 个答案:

答案 0 :(得分:3)

Spring的默认回滚行为是:

  

[...]春天   框架的交易基础设施   默认情况下,代码只会标记a   在这种情况下回滚的事务   运行时,未经检查的异常;那   是,当抛出异常是一个   实例或子类   RuntimeException的。 (错误也会 -   默认情况下 - 导致回滚。)   检查抛出的异常   从事务方法不会   导致交易被滚动   回来。

但你可以覆盖它。这取决于您用于划分事务的机制(例如注释,XML等),但异常回滚内容的要点在spring docs here

例如,如果使用@Transactional注释,则可以为注释指定rollbackFor属性,以指定导致回滚的异常。

相关问题