Проверка ссылочной сущности Spring Boot Cross Entity - PullRequest
0 голосов
/ 25 апреля 2020

Как обычно, в моей базе данных MongoDB также есть несколько объектов. Эти объекты ссылаются друг на друга по идентификаторам.

Пример: Объект оценки может ссылаться на объект Patient. На самом деле, когда я сохраняю любую сущность, я проверяю все эти ссылки. Поэтому, когда я сохраню оценку, я проверю, существует ли еще указанный пациент. Если нет, то сохранение не удастся.

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

Следовательно, кажется, что мой уровень проверки слишком строг, но лучше просто не проверять этот вид перекрестных ссылок? Таким образом, вопрос заключается в том, должен ли я подтверждать существование пациента при сохранении объекта оценки? (Я имею в виду, должен ли я проверять это каждый раз, когда сохраняю)

Мне очень любопытно узнать вашу точку зрения на проблему такого рода. Большое спасибо за любой комментарий под вопросом, Хорошего дня:)

1 Ответ

0 голосов
/ 26 апреля 2020

Вам необходимо удалить все сущности, связанные с идентификатором Patient (до удаления), поскольку любая другая сущность не может указывать на несуществующую patient сущность.

Другое решение: Логическое стирание. Не удаляйте пациента, просто деактивируйте его. Таким образом, ваши уже сохраненные сущности могут указывать на Patient сущность, но если вы захотите сохранить их снова, ваша служба проверки не сможет сказать: «Patient Id деактивирован».

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