Alexanevsky
@Alexanevsky
Любительская web-разработка

Как восстанавливать базу, когда в одной сущности есть одновременно связи OneToMany и OneToOne к другой?

Здравствуйте!

Дано:
Есть две сущности, допустим User и Address (на самом деле у меня сущности другие но для простоты примера): User имеет отношение со Address дважды: OneToMany (+ зеркальная ManyToOne из Address к User) и ещё одну OneToOne.

В OneToMany находястя все адреса, которые есть у пользователя (addresses).
В OneToOne указана только один из адресов, который является основным (main_address).

Пример кода приложу в комментарии к этому вопросу.

В чём проблема:
Всё работает хорошо до того момента, пока не приходится делать восстановление из бекапа данных.

Так как из-за OneToOne-связи в таблице сущности User добавляется столбец, содержащий main_address_id с ссылкой на эту запись. В таблице сущности Address соответственно есть столбец user_id, так как там ManyToOne-связь.

Но при восстановлении из бекапа база отдаёт ошибку, потому что она не может проставить в таблице User значение main_address_id так как таблица Address ещё не существует (не восстановлена из бекапа).

Восстанавливать сначала Address и потом User тоже нельзя, так как в Address должен быть указан user_id который уже должен существовать.

Вопрос:
Как решить эту проблему?
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы