经过几天的努力,我终于找到了问题所在,显然是解决方案。据我所知,上面显示的映射是正确的(至少,该应用程序正常运行)。唯一的问题是在数据库中,那里有一个插入序列的触发器。这样,每次我尝试插入一个雇员(及其地址)时,Hibernate都会给我两个序列号(一个用于父级,另一个用于子级),它们已正确设置。但是,在执行提交的确切时刻,Oracle给了我两个更多的序列号,但是这次设置不正确,我的意思是,外键与父级的主键不匹配。
但是,当我需要触发器时,我必须再执行一个步骤:必须修改这些触发器,以便它们检查该:new.ID
值是否是NULL
。如果是,则意味着该触发器已从外部Hibernate(即另一个应用程序)触发,因此我从序列中获取nextval,否则我将保留来自Hibernate的值。