Исключение Spring Roll Back в контроллере - PullRequest
0 голосов
/ 16 октября 2018

Я хочу откатить исключение в области контроллера, потому что я вызываю некоторые службы в контроллере и хочу сохранить эти службы независимыми.Мой код вроде:

@RestController
@RequestMapping("/admin/corporation")
public class AdminCorporationController {
    private final AdminCorporationService adminCorporationService;
    private final OperateRecordService operateRecordService;
    private final AdminIdentityService adminIdentityService;

    @Autowired
    public AdminCorporationController(AdminCorporationService adminCorporationService, OperateRecordService operateRecordService, AdminIdentityService adminIdentityService) {
        this.adminCorporationService = adminCorporationService;
        this.operateRecordService = operateRecordService;
        this.adminIdentityService = adminIdentityService;
    }

    @HasRole({ROLE_SUPER_ADMIN, ROLE_MAIN_ADMIN})
    @PostMapping("/addCorporation")
    public Map<Object, Object> addCorporation(@RequestBody JSONObject jsonObject) throws ExecutionException, InterruptedException {
        Corporation corporation = (Corporation) JSONObject.toBean(jsonObject.getJSONObject("corporation"), Corporation.class);
        CorporationStaff corporationLeader = (CorporationStaff) JSONObject.toBean(jsonObject.getJSONObject("corporationLeader"), CorporationStaff.class);
        //add Corporation method
        CompletableFuture<String> addCorporationFuture = adminCorporationService.addCorporation(corporation);
        corporationLeader.setCorporationId(addCorporationFuture.get());
        //for example, exception happened in this service method, I want to roll back the two serivce method together.
        //add Corporation Staff method
        CompletableFuture<Void> addIdentitiesFuture = adminIdentityService.addIdentities(new CorporationStaff[]{corporationLeader}, IDENTITY_TYPE_CORPORATION_STAFF);
        CompletableFuture.allOf(addCorporationFuture, addIdentitiesFuture).get();
        return ResponseUtil.success(null, null);
    }
}

Текущая ситуация такова, что я могу откатить только один из методов.Если Корпорация успешно добавлена, но при добавлении Персонала происходит сбой, информация Корпорации по-прежнему добавляется в базу данных, но я хочу откатить добавленную информацию Корпорации, если Персонал не удалось добавить.Есть какой-либо способ сделать это?Большое спасибо!:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...