如何在我有场景的Java中处理春季交易:
一种服务方法,请说Methoda((调用另一种方法-MethodB((。从methodb((中,我正在进行验证,如果该验证变为true,我将调用另一个methodc((,并且该方法必须订立,而所有其他方法都应获得回滚,即从methoda((和methodb((和methodb((完成的交易。必须获得回滚,但是MethodC中的交易必须进行,并且不能是回滚。
用于回滚我使用的交易 -
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
实时方案 -
执行交易时,我会尝试创建一些交易。根据这些交易,我检查一个值之一是否已达到阈值点,我需要触发邮件。该邮件是DB交易。所有其他交易必须卷回去,并且仅必须坚持邮件交易。
任何帮助。
编辑: -
类似的问题 -
提交在@transactional内部的try-catch中更改
但这并不能解决我的问题。如果 @transactional在班级和方法级别也给出怎么办。?
我认为,像这样的代码
@Transactional(propagation= Propagation.REQUIRED)
public void methodA() {
methodB();
}
public void methodB() {
if(validtaion=true){
SeverB.methodC();
throw YourException;
}
}
// in ServerB.java
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodC() {
// do your thing
}
,您最好测试它是否正常工作。