我遇到了里这样的问题,还请各位高人解答一二service A{
@Transactional(rollbackFor = Exception.class,isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRES_NEW)
method B(){
dao1.deleteAll();
......
dao1.save(); }
@Transactional(rollbackFor = Exception.class,isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED)
method C(){
method B();
dao1.select();
}
}
这样在同一个service中,C方法调用B方法,但是C读到的数据还是deleteAll之前的数据,REQUIRES_NEW不是会开一个新的事务去执行独立自己的操作吗?为什么会出现这样的情况呢?springjava
@Transactional(rollbackFor = Exception.class,isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRES_NEW)
method B(){
dao1.deleteAll();
......
dao1.save(); }
@Transactional(rollbackFor = Exception.class,isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED)
method C(){
method B();
dao1.select();
}
}
这样在同一个service中,C方法调用B方法,但是C读到的数据还是deleteAll之前的数据,REQUIRES_NEW不是会开一个新的事务去执行独立自己的操作吗?为什么会出现这样的情况呢?springjava
@Transactional(rollbackFor = Exception.class,isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRES
method B();
dao1.select();
}
@Transactional(rollbackFor = Exception.class,isolation=Isolation.ISOLATION_READ_COMMITTED,propagation=Propagation.REQUIRED)
method C(){
method B();
dao1.select();
}