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

php中文网
发布: 2016-06-07 17:31:29
原创
1946人浏览过

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默认就是这种。真的很白痴的问题啊!!

LibLib AI
LibLib AI

中国领先原创AI模型分享社区,拥有LibLib等于拥有了超多模型的模型库、免费的在线生图工具,不考虑配置的模型训练工具

LibLib AI 647
查看详情 LibLib AI

这个生成器使用一个自然键(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]错误解决

linux

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号