在Spring中,我声明了一个方法是事务性的。我使用HibernateTransactionManager。现在,我想从这个方法抛出一个异常,但我不希望hibernate回滚事务。是否可以指定是哪些异常导致了回滚?
发布于 2009-11-27 10:11:23
Spring的默认回滚行为是这样的:
...默认情况下,Spring Framework的事务基础结构代码将只在运行时未检查异常的情况下标记要回滚的事务;也就是说,当抛出的异常是RuntimeException的实例或子类时。(默认情况下,错误还会导致回滚。)从事务性方法引发的检查异常不会导致事务回滚。
不过,您可以覆盖此设置。这取决于您用来划分事务的机制(例如,注释、XML等),但异常回滚的要点在spring docs here中。
例如,如果使用@Transactional
注释,则可以为注释指定rollbackFor
属性,以指定哪些异常会导致回滚。
https://stackoverflow.com/questions/1807818
复制