NHibernate Oracle - 交易提交问题

时间:2009-09-10 04:32:45

标签: oracle nhibernate

0投票

您好,

我在提交事务时遇到相同的问题而失败了。我用AnsiString更改了我的所有映射字符串。但我仍然得到错误。

选择工作正常,即使删除也工作正常。

如果我的事务只包含一个插入语句或更新语句,那么它也可以正常工作。

但是当有多个查询(插入/更新)时,那么在提交时它会给出错误“完整性约束:未找到父密钥”

你能帮帮我吗?

...马赫什

3 个答案:

答案 0 :(得分:0)

此错误是完整性约束错误。这意味着在交易结束时,父子关系中没有父母的孩子。由于您在提交时收到此错误,因此意味着FOREIGN KEY被声明为DEFERRABLE(initialy deferred)并且仅在提交时检查完整性。

你的逻辑有问题,也许你可以发一个简单的例子(CREATE TABLE parent ... CREATE TABLE child ... UPDATE / INSERT),我们可以帮助你。

答案 1 :(得分:0)

NHibernate会在插入新创建的employee_type之前插入(或更新)员工。该错误表示您的员工在数据库中缺少其employee_type。

2个选择:

  1. 在创建employee_type之后以及创建(或更新)员工之前执行ISession.Flush。
  2. 更改外键是可以接受的。

答案 2 :(得分:0)

我得到了解决方案......

因为NHibernate行为而发生在我身上......

我已经明确地为自动增量创建了序列和触发器。

但它会触发两次,首先是我进行正常保存,第二次是当我调用完成时。因此,id的实际使用和引用之间存在未匹配。

所以它给了我错误 - 找不到父键。

我刚刚删除了所有的触发器和序列,在映射文件中我添加了生成的类作为增量。 :d

“generator class =”increment“”

这对我来说非常有用......

谢谢, 马赫什