Spring 并且 Hibernate Transaction 不适用于批量保存操作

Spring and Hibernate Transaction does not work for mass save operations

我正在使用 JpaRepository.I 使用 @Transactional 进行批量保存,但它没有 work.I 总结我所做的过程: 我有两个实体

首先,我保存了 TheaderEntity,因为 THeaderEntity 的信息将在 TDetailsEntity 中使用(一对多,CrudRepository.save(),1 个 Header for 50 Details) 然后转保存在TDetailsEntity的loop.I中,如果任何注册表出错,都希望整个过程回滚。

@Transactional
public Result createTdetailsFromHeaderId(String token, String headerId, DetailRequests detailRequests)

我使用了@Transactional,但只有收到错误的记录被回滚。

要回答为什么只有 1 条记录被回滚,您可以查看 Spring 的事务逻辑——根据您的描述,我怀疑每次保存都会打开 1 个事务,但解决此问题的一种简单方法是:

  • @OneToMany 关系调整为 cascade 实体持久化。
  • 创建适当的实体(1 THeaderEntity 和 50 TDetailsEntity 已正确设置所有对象引用)。​​
  • save 然后应该将持久化级联到其 TDetailsEntityTHeaderEntity