Batch update returned unexpected row count from update [0]
2015-12-18 16:53
459 查看
1.Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1这个异常是由于主键设置为自增长,而在我们插入记录的时候设置了ID的值导致的。即在映射文件中,设置 <id name="id" column="ID" type="integer"><generator class="increment"/>
</id>,而在插入数据时,又设置了ID值导致的。
若使用触发器时,出错的些错误:
解决方案:
在触发器脚本中添加如下语句——起始处(as 之后 begin之前)set nocount on;结尾处(end之后)set nocount off
原因分析:Nhibernate在对数据库执行更改操作时,会比较更改记录的数量与数据库返回的实际受 影响记录数(也就是@@ROWCOUNT的返回值),如果两者不一致,就会引发上述异常。而让数据库返回的实际受影响记录数发生变化的原因,就是在触发器 中执行了Update、Insert或Delete语句。而nocount开关的作用,就是让SQL
Server在执行数据更改操作后不返回受影响记录数。只要在触发器脚本中执行数据库更改操作前打开nocount开关,就可以让Nhibernate得到正常的预期结果,进而消除此异常。
2.net.sf.hibernate.PropertyAccessException: exception setting property value with CGLIB setter of com.your.entity.classname.set***()
也是很常见的错误。引起此错误的原因很多,类型转换出错,NullPoinerExcption等。
这里说一下NullPointerException,Hibernate有一个问题,对于java类型为基本类型的字段,如果数据库中该字段为 null,则load数据时会触发NullPointerException,从而引起PropertyAccessException。
3.NHibernate中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,这两个字段.
如果NHibernate设置的单项关联,即使table1中的id2为null值,table2中id2中有值,查询都不会出错.但是如果table1中的id2字段有值,但是这个值在table2中主键值里并没有,就会报上面的错!
如果NHibernate是双向关联,那么table1中的id2为null值,但是table2中如果有值,就会报这个错.这种情况目前的解决办法就是改成单项关联,或者把不对应的数据改对!
Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1这个异常是由于主键设置为自增长,而在我们插入记录的时候设置了ID的值导致的。即在映射文件中,设置 <id name="id" column="ID" type="integer"><generator class="increment"/>
</id>,而在插入数据时,又设置了ID值导致的。
若使用触发器时,出错的些错误:
解决方案:
在触发器脚本中添加如下语句——起始处(as 之后 begin之前)set nocount on;结尾处(end之后)set nocount off
原因分析:Nhibernate在对数据库执行更改操作时,会比较更改记录的数量与数据库返回的实际受 影响记录数(也就是@@ROWCOUNT的返回值),如果两者不一致,就会引发上述异常。而让数据库返回的实际受影响记录数发生变化的原因,就是在触发器 中执行了Update、Insert或Delete语句。而nocount开关的作用,就是让SQL
Server在执行数据更改操作后不返回受影响记录数。只要在触发器脚本中执行数据库更改操作前打开nocount开关,就可以让Nhibernate得到正常的预期结果,进而消除此异常。
2.net.sf.hibernate.PropertyAccessException: exception setting property value with CGLIB setter of com.your.entity.classname.set***()
也是很常见的错误。引起此错误的原因很多,类型转换出错,NullPoinerExcption等。
这里说一下NullPointerException,Hibernate有一个问题,对于java类型为基本类型的字段,如果数据库中该字段为 null,则load数据时会触发NullPointerException,从而引起PropertyAccessException。
3.NHibernate中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,这两个字段.
如果NHibernate设置的单项关联,即使table1中的id2为null值,table2中id2中有值,查询都不会出错.但是如果table1中的id2字段有值,但是这个值在table2中主键值里并没有,就会报上面的错!
如果NHibernate是双向关联,那么table1中的id2为null值,但是table2中如果有值,就会报这个错.这种情况目前的解决办法就是改成单项关联,或者把不对应的数据改对!
相关文章推荐
- 复旦美女学霸张安琪的五个“神迹”和背后的真实故事
- Linux内存管理之mmap详解
- 重编译OpenCV库(Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41中)
- Postman—Http请求模拟工具
- angular file upload 文件上传
- ros实验《Creating a ROS msg and srv》rosmsg show beginner_tutorials/Num无法返回问题
- win10系统怎么设置outlook开机启动?
- VMware虚拟机ubuntu系统和主机建立共享文件
- Android开发经验总结
- Swift难点-继承中的构造规则实例具体解释
- iOS Objective-C 中 bool 与 BOOL 的你不一定知道的事
- 漫谈大型网站架构
- Error:Cause: org/gradle/api/publication/maven/internal/DefaultMavenFactory Android
- CentOS 5.11 软件安装-gcc的问题
- drawable文件夹下的XML的selector节点详解(State List)
- iOS addChildViewController 详解
- 显示python的site-packages路径
- Mac下Sublime Text 2 快捷键
- poj1661Help Jimmy【记忆化搜索】
- 一些简单的mongodb常用命令收集