父子关系,使用生成的父键级联保存为子表中的外键

时间:2010-09-07 20:25:26

标签: hibernate

我在父子关系中有两个表。父可以有多个子记录。 父表的Primay键是由hibernate生成的,这个生成的父表的主键是子表中的外键。在父hbm中设置了cascade = all。因此,在生成父键并保存父记录之后,应使用相同的生成键值保存子记录。我知道这样做的唯一方法是使用“外来”生成器,但是对于与父子的一对多关系,我不能将父键作为子表中的主键。它导致UniqueObjectException。任何人都知道在这种情况下如何在子表中保存生成的父键值?

1 个答案:

答案 0 :(得分:0)

  

因此,在生成父键并保存父记录后,子记录应以相同的生成键值保存。

对于一对多的关系没有任何意义,如果你有很多孩子,你就不能使用父母的PK作为孩子的PK。

  

我知道这样做的唯一方法是使用“外来”生成器,但是对于与父子一对多的关系,我不能将父键作为子表中的主键。它导致UniqueObjectException。

是的,很明显。你真正期望的结果是什么?可能的数据库设计是什么样的?

  

在这种情况下,任何人都知道如何在子表中保存生成的父键值?

嗯,你实际得到它(作为外键)。我真的不明白真正的目标是什么。您可以解释一下可能的数据库设计是什么,以及真正的问题是什么,以便我们可以考虑解决方案?