如何捕获未经检查的事务异常

时间:2017-08-02 09:40:05

标签: java hibernate jpa spring-boot

我使用的是spring-boot和JPA。我试图捕获未经检查的异常,例如(Constraint Violation)抛出事务。即使我添加了catch块,它也会在超出事务边界时抛出。

我用google搜索,发现可以通过事务回调来实现。我尝试下面的代码:仍然给出错误

public class TransactionAspect extends TransactionSynchronizationAdapter {

    @Before("@annotation(org.springframework.transaction.annotation.Transactional)")
    public void registerTransactionSyncrhonization() {
        TransactionSynchronizationManager.registerSynchronization(this);

    }

    @Override
    public void afterCompletion(int status) {
        // code
        System.out.println(status);
    }
}

请帮助我!!

1 个答案:

答案 0 :(得分:3)

您需要手动刷新JPA实体管理器 try{ manager.flush(); }catch(ConstraintViolationException){}。 @Transactional方面是围绕方法 调用并且您无法捕获此异常,因为它在调用方法后刷新。