Весенняя загрузка транзакции mongodb: как обработать действие сохранения одной коллекции транзакцией второй коллекции (команда обновления) - PullRequest
0 голосов
/ 15 апреля 2020

Использование Spring boot (последняя версия 2020) и MongoDB 4.2 У меня есть сценарий, где у меня есть коллекции, такие как Employee и Project. Теперь предположим, что вызов сохранения для Employee также внес изменения в коллекцию проектов. (как и для проекта, он обновляет список сотрудников, работающих в нем).

Теперь в то же время проект может быть обновлен и откуда-то еще (может быть, на CRUD или около того).

Теперь, что мое требование - если транзакция / обновление для проекта потерпело неудачу, то сохранение или обновление сотрудника также не должно выполняться. Итак, как правильно реализовать это, используя @Transactional для проекта, сотрудника или обоих. Или java обработка исключений может сыграть хорошую роль для восстановления чего-либо, когда возникает такой конфликт.

В моей реализации я сделал @Transactional для пользовательского метода сохранения моего проекта. В этом случае я получаю «Ошибка записи конфликта» для проекта, и он не сохраняется ни одним из вызовов сохранения (сначала это было из сохранения сотрудника, которое также вызывает обновление проекта, а во-вторых, было другое явное обновление для проекта)

Кроме того, после получения «Ошибка записи конфликта» для 2 последовательных обновлений mon go автоматически повторяет попытку обновить оба вызова и в каком порядке?

Кто-нибудь также может предложить какую-либо ссылку или сделать c или Пример для тестирования такого сценария ios в весеннем загрузочном коде или в тестовых примерах.

...