我需要实现实体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并抛出异常以查看事务是否真的回滚

最佳答案

这都怪我。 savedEntityattached
@Transactional方法中对其字段的任何更改都会反映到数据库中。

10-06 09:16