我需要实现实体save
方法
将实体保存到数据库
返回附属实体
将entity.id设置为请求正文
致电外部服务
使用响应中的相应字段更新实体字段“ externalId”
将实体刷新到数据库
如果外部服务响应错误,则回滚事务。
我试图做的
@Transactional
public MyEntity save(MyEntity model) {
// more complex logic here: save if not exists
// omitted for brevity
var savedEntity = recipientRepository.save(entity);
var createdExternalEntity = restClient.createExternalEntity(
savedEntity); // assume savedEntity has savedEntity.id set at this point
// update field for a newly created
savedEntity.setExternalId(createdExternalEntity.getId());
return savedEntity;
}
问题:
savedEntity.setExternalId(createdExternalEntity.getId());
似乎不起作用而且我什至没有尝试模拟
restClient.createExternalEntity
并抛出异常以查看事务是否真的回滚 最佳答案
这都怪我。 savedEntity
是attached
@Transactional
方法中对其字段的任何更改都会反映到数据库中。