Java @springboot JPA的事务性保存

Java @springboot JPA的事务性保存,java,spring-boot,jpa,spring-data-jpa,Java,Spring Boot,Jpa,Spring Data Jpa,我需要实现实体save方法 将实体保存到数据库 返回附加实体 将entity.id设置为请求正文 呼叫外部服务 使用响应中的相应字段更新实体字段“externalId” 将实体刷新到数据库 如果外部服务响应错误,则回滚事务 我想做什么 @Transactional 公共MyEntity保存(MyEntity模型){ //这里的逻辑更复杂:如果不存在则保存 //为简洁起见省略 var savedEntity=recipientRepository.save(实体); var createdEx

我需要实现实体
save
方法

  • 将实体保存到数据库
  • 返回附加实体
  • 将entity.id设置为请求正文
  • 呼叫外部服务
  • 使用响应中的相应字段更新实体字段“externalId”
  • 将实体刷新到数据库
如果外部服务响应错误,则回滚事务

我想做什么

@Transactional
公共MyEntity保存(MyEntity模型){
//这里的逻辑更复杂:如果不存在则保存
//为简洁起见省略
var savedEntity=recipientRepository.save(实体);
var createdExternalEntity=restClient.createExternalEntity(
savedEntity);//假设savedEntity此时设置了savedEntity.id
//为新创建的文件更新字段
setExternalId(createdExternalEntity.getId());
返回保存身份;
}
问题:
savedEntity.setExternalId(createdExternalEntity.getId())似乎不起作用


我甚至没有尝试模拟restClient.createExternalEntity并抛出异常,以查看事务是否真的回滚,这是我的错<代码>保存身份
附件

@Transactional
方法中字段的任何更改都会反映到DB。

您得到的异常/错误是什么?