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

标签 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?

最佳答案

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

关于java - 在 Spring Data JPA 中的单个事务中保存、删除和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57488669/

相关文章:

java - 未检测到命名参数

java - 如何限制将 json 映射到 jpa 对象或从 jpa 对象映射的工作

java - 在 spring data jpa 投影中使用嵌入值对象

java - Spring - 使用@Service和@Repository注释同一个类

java - 类加载器 java.lang.NoClassDefFoundError?

java - 无法使用 webdriver 访问链接菜单选项

java - 如何对两个对象使用集合方法(removeAll()和retainAll())

java - 为 Simian Ant 任务设置忽略 block 注释

spring - 如何在 Spring Data JPA CRUDRepository 中添加缓存功能

Spring数据示例