我有以下方法:
@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?。
答案 0 :(得分:0)
正如@JB Nizet在其评论中已经指出的那样,这是@Transactional
的确切目的,因此所有事务都将在一次事务中进行。
但是,请确保从另一个bean而不是从同一类中的另一个方法调用该方法!正如您已经指出的,那时事务性不起作用。