我有以下情况。
假设我有2个@Services类,每个类都有一个用@Transactinal注释的方法。
第一类@Transactional的方法,它调用第二类的方法(在第二类中,该方法使用@Transactiona注释(propagation = Propagation.REQUIRED))。
public class Class1 {
@Autowired
private Class2 class2;
@Transactional
public void doSomeWork(Object value){
dao.save(value)
Object anotherValue = value.getAnotherValue();
AnotherObject anotherObject = new AnotherObject();
anotherObject.setValue1("lorem ip");
anotherObject.setAnotherValue(anotherValue);
class2.doSomeWork(anotherObject)
}
}
@Service
public class Class2{
@Transactional(propagation=Propagation.REQUIRED)
public void doSomeWork(){
...
throws new RuntimeException("fail");
}
}
我观察到该值(第一个方法中的对象)是回滚,但现在它有一个数据库ID并且在会话缓存中。
我正在弄清楚如何从会话中删除此对象或如何驱逐此...
任何sugestions?