回滚和@Transactional的问题

时间:2015-04-29 17:32:09

标签: java transactions spring-data

我有以下情况。

假设我有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?

0 个答案:

没有答案