在 Spring Data JPA 中的单个事务中保存、删除和更新

Save, delete and update within a single transaction in Spring Data JPA

我有以下方法:

@Transactional
public void saveUpdateAndDelete(Entity newEntity, Entity updatedEntity, long deleteEntityId) {
  entityRepository.save(newEntity);
  entityRepository.findById(updatedEntity.getId())
    .ifPresent(e -> e.setName(updatedEntity.getName));
  entityRepository.deleteById(deleteEntityId);
}

如何确保 saveUpdateAndDelete 方法中的所有语句都将在单个事务中执行?

编辑:问题的目的是解决一些实现问题,而不是 Spring 如何通过创建代理 类 来处理 @Transactional,这里有解释:Spring - @Transactional - What happens in background?.

正如@JB Nizet 在他的评论中所述,这正是 @Transactional 的确切目的,因此所有交易都将在一次交易中完成。 但是请确保您从另一个 bean 调用该方法,而不是从同一个 class 中的另一个方法调用该方法!正如您已经指出的那样,交易将不起作用。