Как восстанавливать базу, когда в одной сущности есть одновременно связи 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 который уже должен существовать.