在 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 中的另一个方法调用该方法!正如您已经指出的那样,交易将不起作用。
我有以下方法:
@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 中的另一个方法调用该方法!正如您已经指出的那样,交易将不起作用。