首页 数据库 mysql教程 ORA-02291: 违反完整约束条件 ……

ORA-02291: 违反完整约束条件 ……

Jun 07, 2016 pm 05:31 PM

ORA-02291: 违反完整约束条件 (UNISPOWER.FK932556A9840256A3) - 未找到父项关键字

错误
Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
ORA-02291: 违反完整约束条件 (UNISPOWER.FK932556A9840256A3) - 未找到父项关键字

可能原因
表A中有个字段是外键,关联了表B中的某字段,再往表A插入数据时,会出现这种情况。

可能原因:
1.在往A表插入时,外键关联的字段在B表中必须有数据,如果B表中没有数据则又这种情况。

2.产生了外键环,就是B表中被外键关联的字段又关联了C表中的字段,而C中相应字段却没有数据,则产生这种情况。
3.如果不是上两种情况,那么就是一个非常容易疏忽的问题:A中的外键字段和B中的被外键关联字段数据类型和长度不一致。特别是数据长度,必须要一致。

主表和从表中的数据类型的长度不一样。
在Hibernate spring下运行正常,到springRMI下有问题
Could not execute JDBC batch update; nested exception is
ORA-02291: 违反完整约束条件 (UNISPOWER.FK59EE1CFB72ACDA11) - 未找到父项关键字

我的原因:
由于映射实体类的配置对id属性的设置一直是自动生成的。程序中有对id赋值的语句,导致插入表格时候的id值,和赋给下面关联表格中的参考id值不一直。
就出现了上面的错误,因为substation表格中的id值是自动生成的,当然和程序中我赋值给的id值不同,后面的bay等又都是根据我程序中给的id值做参考外键。
这个问题真的是在网上找不到啊……
修改方法是将**.hbm.xml文件中id设置属性修改

         
          column="SUBSTATION_ID"
          type="java.lang.Long"
          unsaved-value="-1"
      >
         
         

     

原来的generator一直是native这表示根据底层数据库自动选择适当的自动id生成策略
现在的assigned表示让应用程序在调用save()之前为对象分配一个标示符。其实如果不指定generator默认就是这种。真的很白痴的问题啊!!

这个生成器使用一个自然键(natural key,有商业意义的列-译注)作为主键,而不是使用一个代理键( surrogate key,没有商业意义的列-译注)。这是没有指定 元素时的默认行为。
【需要注意】当选择 assigned 生成器时,,除非有一个 version 或 timestamp 属性,或者你定义
了 Interceptor.isUnsaved(),否则需要让 Hiberante 使用 unsaved-value="undefined",强制
Hibernatet 查询数据库来确定一个实例是瞬时的(transient) 还是脱管的(detached)。

相关阅读:

SPFILE 错误导致数据库无法启动(ORA-01565)

ORA-01172、ORA-01151错误处理

ORA-00600 [2662]错误解决

ORA-02291: 违反完整约束条件 ……

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

减少在Docker中使用MySQL内存的使用 减少在Docker中使用MySQL内存的使用 Mar 04, 2025 pm 03:52 PM

减少在Docker中使用MySQL内存的使用

如何使用Alter Table语句在MySQL中更改表? 如何使用Alter Table语句在MySQL中更改表? Mar 19, 2025 pm 03:51 PM

如何使用Alter Table语句在MySQL中更改表?

mysql无法打开共享库怎么解决 mysql无法打开共享库怎么解决 Mar 04, 2025 pm 04:01 PM

mysql无法打开共享库怎么解决

什么是 SQLite?全面概述 什么是 SQLite?全面概述 Mar 04, 2025 pm 03:55 PM

什么是 SQLite?全面概述

在 Linux 中运行 MySQl(有/没有带有 phpmyadmin 的 podman 容器) 在 Linux 中运行 MySQl(有/没有带有 phpmyadmin 的 podman 容器) Mar 04, 2025 pm 03:54 PM

在 Linux 中运行 MySQl(有/没有带有 phpmyadmin 的 podman 容器)

在MacOS上运行多个MySQL版本:逐步指南 在MacOS上运行多个MySQL版本:逐步指南 Mar 04, 2025 pm 03:49 PM

在MacOS上运行多个MySQL版本:逐步指南

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么? 哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么? Mar 21, 2025 pm 06:28 PM

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什么?

如何保护MySQL免受常见漏洞(SQL注入,蛮力攻击)? 如何保护MySQL免受常见漏洞(SQL注入,蛮力攻击)? Mar 18, 2025 pm 12:00 PM

如何保护MySQL免受常见漏洞(SQL注入,蛮力攻击)?

See all articles