Hibernate中常见问题 No row with the given identifier exists问题
收集:Hibernate中常见问题 No row with the given identifier exists问题的原因及解决
Hibernate中No row with the given identifier exists问题的原因及解决
产生此问题的原因:
有两张表,table1和table2.产生此问题的原因就是table1里做了关联<one-to-one>或者<many-to-one unique="true">(特殊的多对一映射,实际就是一对一)来关联table2.当hibernate查找的时候,table2里的数据没有与table1相匹配的,这样就会报No row with the given identifier exists这个错.(一句话,就是数据的问题!)
假如说,table1里有自身的主键id1,还有table2的主键id2,这两个字段.
如果hibenrate设置的单项关联,即使table1中的id2为null值,table2中id2中有值,查询都不会出错.但是如果table1中的id2字段有值,但是这个值在table2中主键值里并没有,就会报上面的错!
如果hibernate是双向关联,那么table1中的id2为null值,但是table2中如果有值,就会报这个错.这种情况目前的解决办法就是改成单项关联,或者把不对应的数据改对!
这就是报这个错的原因了,知道原因了就相应的改就行了.或许还有些人迷惑hibernate关联都配好了,怎么会出现这样的错?其实这是编程的时候出现的问题,假如说我在添加信息的时候,页面传过来的struts的formbean到dao方法中需要封装成hibernate的po(就是hibenrate的bean),要是一个个po.get(form.set())实在太麻烦了,这样一般都会写个专门的方法来封装,遇到po.get(form.set())这种情况直接把struts的formbean对象传到此方法中封装就行了,假如我有个字段是创建人id,那么这个字段是永远不会改的,我在添加的时候还调用这个方法,这个专门封装的方法是有一些判断的,假如说我判断一下,如果遇到创建人id传过来为空值,我判断如果是空值,我把创建人id设为0,但是用户表中userid是主键从1开始自增的,那么这样数据就对应不上了,一查就会出这个错了.这个错在开发刚开始的时候经常发生,因为每个人的模块都是由相应的人独立开发完成以后再整合在一起的,每个人写单独那一块的时候往往会忽略这些,所以整合的时候这些问题往往就都一下子全冒出来了....整合很辛苦,tnnd!
hibernate的查询的比较
hibernate的查询有很多,Query,find,Criteria,get,load
query使用hsql语句,可以设置参数是常用的一种方式
criteria的方式,尽量避免了写hql语句,看起来更面向对象了。
find方式,这种方式已经被新的hibernate丢弃
get和load方式是根据id取得一个记录
下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。
1,从返回结果上对比:
load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常
get方法检索不到的话会返回null
2,从检索执行机制上对比:
get方法和find方法都是直接从数据库中检索
而load方法的执行则比较复杂
1,首先查找session的persistent Context中是否有缓存,如果有则直接返回
2,如果没有则判断是否是lazy,如果不是直接访问数据库检索,查到记录返回,查不到抛出异常
3,如果是lazy则需要建立代理对象,对象的initialized属性为false,target属性为null
4, 在访问获得的代理对象的属性时,检索数据库,如果找到记录则把该记录的对象复制到代理对象的target
上,并将initialized=true,如果找不到就抛出异常 。
转载于:https://www.cnblogs.com/libin6505/p/10272589.html
Hibernate中常见问题 No row with the given identifier exists问题相关推荐
- 收集:Hibernate中常见问题 No row with the given identifier exists问题的原因及解决
Hibernate中No row with the given identifier exists问题的原因及解决 产生此问题的原因: 有两张表,table1和table2.产生此问题的原因就是tab ...
- Hibernate常见问题 No row with the given identifier exists问题的原因及解决
(1)在学习Hibernate的时候遇到了这个问题"No row with the given identifier exists"在网上一搜看到很多人也遇到过这个问题! 问题的原 ...
- 关于Hibernate中No row with the given identifier exists问题的原因及解决
今天遇到一个bug,截图如下 有两张表,table1和table2.产生此问题的原因就是table1里做了关联<one-to-one>或者<many-to-one unique=&q ...
- org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [xx]
2019独角兽企业重金招聘Python工程师标准>>> 最近在做项目的时候出现了这样的一个错 org.hibernate.ObjectNotFoundException: No ro ...
- No row with the given identifier exists 的原因和解决方法
hibernate 中有时候会报No row with the given identifier exists这样的错误.另外还有这样的提示: [com.gohighsoft.pt.domain.en ...
- No row with the given identifier exists 解决方法
今天学下做项目,遇到 No row with the given identifier exists错误,足足找了好几个钟头,终于找到了, 记下来,以供参考 具体解决办法是,当报 No row wit ...
- Nhibernate出现No row with the given identifier exists问题的产生原因及解决方法
Nhibernate出现No row with the given identifier exists问题的产生原因及解决方法 参考文章: (1)Nhibernate出现No row with the ...
- Hibernate:More than one row with the given identifier was found解决办法
今天写一个Action 通过 HQL 查询一个表 出现异常 "More than one row with the given identifier was found" 问题原因 ...
- Hibernate3.x异常No row with the given identifier exists 解决方法
这个异常是在 多对一关系映射时,一方表中对应的数据不存在才抛出的. 原来的配置: <many-to-one class="com.art.model.user.UserInfo&quo ...
最新文章
- 听webcast的行为型模式篇-迭代器模式(Iterator Pattern) 记录
- WIN7电脑文件莫名其妙被删除后的恢复
- 【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
- SSL认证:单向认证与双向认证——密码学笔记(八)
- [云炬python3玩转机器学习笔记] 3-12 数据加载和简单的数据探索
- 服务器云采购,从发展角度看小企业需要上云还是采购服务器
- Csharp: create Transparent Images in winform
- QQ资料清空php源码,[php源码][QQ玫瑰小镇]一键收铲种,php网页版
- Linux驱动的ioctl函数简要说明
- 对拷 使用scp命令在两台linux上对拷文件或者文件夹
- exchange 管理员只有创建新用户无删除的权限设定方法
- 设计模式网上资料整合理解——行为型模式(一)
- c语言中的字符数组和字符串之间的关系
- 通过第三方平台超级鹰进行登录页面验证码识别
- latex 长表格中放入多行公式
- pygame 画图练习
- 知识图谱 Freebase 的基本概念
- A Question of Ingestion(Dp)
- 用python自动推送文章到kindle
- 程序员如何实现财务自由?
热门文章
- 鸿蒙正式版什么时候上线,终于来了!华为鸿蒙正式版6月2日上线,EMUI时代落幕...
- 地面指示标志_消防应急照明与疏散指示系统的设计和施工安装规范,收藏学习!...
- html表单中动态添加下拉框,antd Select下拉菜单动态添加option里的内容操作
- Windows注册表相关示例(重装Chrome、思迅条码软件、清除远程痕迹等)
- xtragrid 某个值 查找_Java 经典算法:二分法查找(循环和递归两种方式实现)
- springboot(六):如何优雅的使用mybatis
- 对Linux网络配置管理的简单使用经验
- vShield App设计指南[上]
- LeetCode 5364. 按既定顺序创建目标数组
- Kruskal算法 最小生成树