【发布时间】:2011-11-07 09:35:20
【问题描述】:
我有一个 spring-hibernate 应用程序并面临一个奇怪的问题。我有 2 个相同应用程序的独立实例连接到两个不同的 Oracle 数据库。我有一个函数,它使用休眠的 saveOrUpdate() 方法来更新数据库中的对象。该实体的主键也是表数的外键。
问题是当我们更新这个实体的对象时,这个对象在其他表中的所有外部引用在一个数据库中都被取消了,尽管在其他数据库中一切正常。因此,我们在数据库中有很多空外键。我无法弄清楚为什么会发生这种情况,以及对于一个 db 到底需要做什么,一切似乎都运行良好。请帮忙。
【问题讨论】:
-
您是否比较了这两种模式?其中之一是否为外键定义级联规则?
-
我使用 cascadeType.ALL 作为所有外键引用。
-
我的意思是
on delete定义 FK 的规则,例如on delete cascade或on delete set null。 -
不,我没有定义任何这样的规则。
-
你能分享你的hbm文件吗?