首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Spring事务管理有关问题:抛UnexpectedRollbackException

2012-05-02 
Spring事务管理问题:抛UnexpectedRollbackException异常:org.springframework.transaction.UnexpectedRoll

Spring事务管理问题:抛UnexpectedRollbackException
异常:
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only ?
代码:

Java code
    @Transactional    public void foo() {        try{            bar();        } catch (RuntimeException re) {            // caught but not throw further                     }             }     @Transactional    public void bar() {             }


事务传播特性为Required
问题:
当在bar()方法中抛出RuntimeException 异常后,在bar()返回时spring标记了事务回滚状态,最终事务被回滚,即使捕捉了异常。如果一定要在bar方法里抛出RuntimeException异常,那我要怎么使事务不回滚呢?

[解决办法]
抛出的可能不是RuntimeException,试试catch一下Exception
[解决办法]
@Transactional(readOnly = true, rollbackFor = RuntimeException.class)

事务是可以配置遇到什么异常回滚的,,即rollbackFor = 这个属性。
?配置为RunTimeException时,就是遇到RunTimeException时就回滚。。。


如果你想写的是其他的Exception就自己替换,。。


要是不好定义的话,, 可以选择自定义Exception。
[解决办法]
@Transactional(noRollbackFor = {RuntimeException.class})

热点排行