hibernate会话刷新的@Transactional(readonly = true)行为

时间:2016-02-22 18:02:52

标签: spring spring-data-jpa spring-transactions

我们有类似下面的课程

@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 标志设置读/写与只读事务

我不明白为什么即使是只读事务也会提交数据?任何见解都会受到极大欢迎。

0 个答案:

没有答案