我的两个事务都没有回滚,也许我在一些核心概念上缺失。
@Autowired
CustomRepositoryA customrepositoryA
@Autowired
CustomRepositoryB customrepositoryB
@Transactional
public void method(){
//businesslogic
//works fine
customrepositoryA.save(obj);
customrepositoryA.flush();
//Error
customrepositoryB.save(obj);
customrepositoryB.flush();
}
所以我的理解是@Transactional注释应该在存在错误的情况下回滚存储库事务,但它只是为第二个事务持久存储到DB中的第二个回滚。 JPA存储库是否提供了一种清除会话缓存的方法,在hibernate中刷新等效于session.clear()之后?
以下是几年前我所面临的同一问题的链接 One transaction for several JpaRepositories' methods