Мне нужно реализовать метод entity 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());
не работает
И я даже не пыталсяmock restClient.createExternalEntity
и генерируем Exception, чтобы увидеть, действительно ли транзакция откатывается