我们有类似下面的课程
@Transactional(readOnly=true)
public class AService {
@PersistenceContext
private EntityManager em;
@Autowired
private ARepository arepo;
public void saveA(A a) {
arepo.save(a);
}
public void saveandFlushA(A a) {
arepo.save(a);
entityManager.unwrap(Session.class).flush();
}
}
我们正在使用 postgres + jpa-hibernate + spring transaction management ,当我们调用 save(a)方法时它不会导致保存提交,这是正常行为因为我的事务被设置为readonly = true但是当我调用 saveandFlushA(a)时,它会导致insert语句被触发并被提交,但我预计它不会被提交。
Spring Transaction doc说 readOnly 标志设置读/写与只读事务
我不明白为什么即使是只读事务也会提交数据?任何见解都会受到极大欢迎。