java如何使一个JPA存储库具有事务性而另一个不具有事务性?
我有一个方法,我试图改变一些实体,在这个方法中我想保存事务信息。 当发生任何异常时,我希望回滚保存实体,但仍希望保存事务。 那么,如何为实体事务创建一个存储库,而为事务创建一个存储库呢
没有来自存储库的代码
@Override
@Transactional(noRollbackFor=NotEnoughAmountInAccountException.class)
<T extends Transaction> T save(T transaction);
但这没用。 保存放置在最终块中的事务
更新
我用AOP解决了这个问题。我在aspect advice中创建了事务对象,并将其保存在这里,不使用JPA事务
# 1 楼答案
我用AOP解决了这个问题。我在aspect advice中创建了事务对象,并将其保存在这里,从JPA事务中删除
这是@Transactional方法
这是一个方面的建议
同样重要的是,要使这个建议的顺序高于@Transactional的顺序,这样这个建议就超过了事务。 在aspect类上设置@Order(100)。 默认情况下,它的订单较小,因此处于交易状态
# 2 楼答案
用一个新的
@Transactional
这将保存
transaction
元素,即使另一个@Transactional
被回滚