【发布时间】:2021-08-18 13:31:03
【问题描述】:
在我的SpringBoot项目中,我循环保存了三个实体A、B、C。like:
for (i = 0; i < nums; i++) {
AService.save(Ai);
BService.save(Bi);
CService.save(Ci);
}
而在AService,BService,Cservice中,它们直接调用了ARepository的save方法,属于crudRepository。我在 ARepository 上添加 @Transactional 注释:
public class AService {
public save(A a) {
ARepository.save(A);
}
}
@Repository
@Transactional
public interface ARepository {}
从逻辑上讲,我按顺序保存 A、B、C,它们不应该按顺序保存在数据库中吗? 问题是我有另一个定时任务,它将加入表 A、B、C 来查询数据。而且我发现有时B存在但A没有找到......它很少发生但会导致大问题。为什么? 我使用 Jpa + Posgresql。
【问题讨论】:
标签: java spring-boot hibernate jpa transactions