我有一个Transactional的方法,我有一个非事务性的私有方法,可以进行一些db更新。
我需要从事务方法中调用此私有方法,但是在异常的情况下,非事务性的更新也会回滚。
如何使非事务方法从私有方法提交更新,因为它是从事务方法调用的,如果异常,它的更改也会回滚
@Transactional
public Result createTransaction(){
try{
//do someting
}Catch (Exception e){
markAsFailed();
throw new CtxException("customer.notfound");
}
}
private void markAsFailed(){
//do db update
}
答案 0 :(得分:1)
如果有人需要,只需提出答案,需要注意的重点是需要从非事务方法调用的事务方法应该在JB Nizet提到的单独的spring bean中,因为spring工作原理使用代理来实现此行为,并且必须在另一个类中定义该方法,以便spring能够触发事务。一旦你进入课堂,你就不会再次通过代理了
答案 1 :(得分:0)
需要从非Transactional方法调用的事务方法应该在单独的spring bean
中