我在一个循环里面,依次调用A、B、C三个类的service层,然后service层中调用对应的实体类的repository来保存的对应实体。在repository的类上加了@Transactional。
同时,我有一个定时器去关联三张表的查询,现在观察到的现象是,A、B、C依次保存,但是查询的时候出现查到了B没查到A的情况。
按理来说,我每个save都是单独的事务控制,依次调用,为啥会出现查的时候出现了B存了A没存?
大致代码如下:
业务层代码:
for (int i = 0; i < nums; i++) { // nums是任意数字
AService.save(Ai); // Ai表示A1、A2……
BService.save(Bi);
CService.save(Ci);
}
Service层:
public class AService {
public save(A a) {
ARepository.save(A);
}
}
Repository层:
@Repository
@Transactional
public interface ARepository {}
而且save方法是直接用的curdRepository的,也是有单独事务的,这是为啥呢?
看下Spring事务传播行为
确认下这几个节点是一个事务吗