У меня есть список, в котором каждому сотруднику назначен менеджер. Таким образом, для каждого объекта имеется ссылка Manager, которая является не идентификатором менеджера, а набором полей, по которым мы можем идентифицировать менеджера.
Каждый объект Manager имеет список ссылок сотрудников
Так классы выглядят так
Class Manager {
ObjectId _id;
//some attributes
List<Employees> employees;
LocalDateTime createdOn;
}
Class Employee {
ObjectId _id
//some attributes
Manager manager; //Having only attributes but not ObjectId of manager
LocalDateTime createdOn;
}
Мы сделали это, потому что имена и некоторые атрибуты этого менеджера могут быть изменены, и, следовательно, новый объект Manager может быть введен в коллекцию Manager, и тогда все существующие сотрудники теперь будут принадлежать новому объекту менеджера. Такова наша структура.
При запросе мы получим атрибуты менеджера и вернем обратно Список сотрудников менеджера, который является последним в соответствии с атрибутами и полем createOn
Итак, проблема, с которой я сталкиваюсь:
Сохраняя новый список сотрудников, принадлежащих новому менеджеру, я сначала сохраняю всех сотрудников, используя функцию insertMany () mongoClient. Затем я сохраняю диспетчер, используя insert ().
Если после сохранения списка сотрудников и до сохранения менеджера что-то плохое случилось с Монго, и Db не работает, поэтому я не смогу сохранить менеджера, поэтому все сотрудники теперь станут сиротами.
Каким стратегиям я могу следовать, чтобы при следующем запуске MongoDB я мог сначала сохранить все ожидающие объекты, а затем продолжить выполнение остальных операций.
Я использую SpringBoot 2 с драйвером Raw Mongo Java 3.8.0 и Java 8
Я попробовал опцию моно-повторной записи, но она пытается только один раз