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

时间:2019-08-14 05:37:33

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

我有以下方法:

@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?

1 个答案:

答案 0 :(得分:0)

正如@JB Nizet在其评论中已经指出的那样,这是@Transactional的确切目的,因此所有事务都将在一次事务中进行。 但是,请确保从另一个bean而不是从同一类中的另一个方法调用该方法!正如您已经指出的,那时事务性不起作用。