将详细信息保存到数据库时出现TransientObjectException

时间:2010-09-20 13:51:50

标签: java hibernate orm annotations

“表1”可以具有“表2”的多个实例。 “表2”是与“表A”映射的一对一。但“表A”的实例由“表B”创建。 “表1”不必总是具有“表2”的条目。

表2有两列,分别为tb1和tbA。 tb1引用“表1”的主键,tbA引用“表A”的主键。

如果首先保存表A的数据,然后保存表1的数据,那么它可以正常工作。但是,如果我正在保存保存表1的内容,该表的映射到表2并且表A条目尚未保存,我将收到TransientObjectException。

我在JAVA中使用了hibernate和注释。我尝试过级联协会以及我可以在网上找到的所有其他可能的解决方案。但没有用。请提出一些想法。

示例:考虑表1 =人;表2 =归属;表A =汽车;表B =制造商。 人可以有很多车。 Car有person_id(引用Person)和car_id(Car)。汽车绝对应该有制造商。现在在我的应用程序中,一个人将与一个由制造商创建但未保存的汽车相关联(即尚未生成car_id)。现在,当我将会话数据整体保存时(这就是我的情况可以完成)我希望首先保存汽车数据,然后保存Person数据bcos,然后不会发生TransientObjectException。有关如何实现这一目标的任何建议。希望这个例子更好。

1 个答案:

答案 0 :(得分:0)

您的示例非常难以理解并显示一些(伪)代码可能会有所帮助。但根据我对您的描述的理解,您可能需要session.merge()