我有以下方法:
@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 调用该方法,而不是从同一个类中的另一个方法!正如您已经指出的那样,事务性此时不起作用。
关于java - 在 Spring Data JPA 中的单个事务中保存、删除和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57488669/