Как запретить Rest API одновременно обрабатывать вставки в БД? - PullRequest
0 голосов
/ 23 марта 2020

Case:

API ниже был вызван полностью и дважды одновременно.

@PostMapping("/user")
public void postUser(@RequestBody UserRequest userRequest) {
    isolationService.postUser(userRequest);
}

@Transactional
public void postUser(UserRequest userRequest) {
    userRepository.findByName(userRequest.getName()).ifPresent(user -> {
        throw new RequestExceptions.ConflictException();
    });

    User user = User.builder().name(userRequest.getName())
                .build();
    userRepository.save(user);
}

Результат:

|id |name|
|---|----|
|1  |test|
|2  |test|

Не конфликтует .
Как я могу решить эту проблему, не используя уникальные столбцы?

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