当前,如果方法C中发生异常,则代码不会从方法B中回滚数据库更改。我的期望是方法A应该以这样的方式管理事务:如果方法C中发生异常,则代码应回滚方法B中所做的更改。 我正在使用Spring Boot,Maven项目。
class SomeClassA{
@Autowired
SomeClassB someClassB;
@Autowired
SomeClassC someClassC;
@Transactional
public A(){
try{
//This method works fine with some database operations.
someClassB.B();
//In this method, exception occurrs.
someClassC.C();
}
catch(Exception e){
}
}
}
class SomeClassB{
@Transactional
public B(){
//some code with database operation
}
}
class SomeClassC{
@Transactional
public C(){
//some code with database operation
//some exception occurs here
}
}
答案 0 :(得分:0)
是Checked或Runtime异常吗?
因为@Transactional
中的default behaviour说:
任何RuntimeException都会触发回滚,并且任何选中的Exception都会触发 不是。