отношение родитель-потомок, каскадное сохранение с созданным родительским ключом в качестве внешнего ключа в дочерней таблице - PullRequest
2 голосов
/ 08 сентября 2010

У меня есть две таблицы в родительских и дочерних отношениях.Родитель может иметь несколько дочерних записей.Первичный ключ родительской таблицы генерируется hibernate, этот сгенерированный первичный ключ родительской таблицы является внешним ключом в дочерней таблице.Есть каскад = все установлено в родительском HBM.Таким образом, после создания родительского ключа и сохранения родительской записи, дочерняя запись должна быть сохранена с тем же сгенерированным значением ключа.Единственный способ, которым я знаю, это сделать с помощью «чужого» генератора, но для отношения один-много с parent-child я не могу иметь родительский ключ в качестве первичного ключа в дочерней таблице.это приводит к UniqueObjectException.Кто-нибудь знает, как я могу сохранить сгенерированное значение родительского ключа в дочерней таблице в этом сценарии?

1 Ответ

0 голосов
/ 08 сентября 2010

Таким образом, после того, как родительский ключ создан и родительская запись сохранена, дочерняя запись должна быть сохранена с тем же сгенерированным значением ключа.

Это не имеет никакого смысла для отношения один-ко-многим, вы не можете использовать PK родителя в качестве PK ребенка, если у вас может быть много детей.

Единственный способ, которым я знаю, это сделать с помощью «внешнего» генератора, но для отношения один-много с parent-child я не могу иметь родительский ключ в качестве первичного ключа в дочерней таблице. это приводит к UniqueObjectException.

Да, очевидно. Какой результат вы на самом деле ожидаете? Как может выглядеть возможный дизайн базы данных?

Кто-нибудь знает, как я могу сохранить сгенерированное значение родительского ключа в дочерней таблице в этом сценарии?

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

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