Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1的解决方法

本文详细解析了在CRM系统中遇到的Hibernate错误,具体表现为批量更新时实际行数与预期不符的问题。通过调整前端JSP页面的代码逻辑,避免了空字符串作为ID提交至后台,从而解决了错误并分享了两种有效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

15:45:07.503 [http-nio-8080-exec-36] ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1]的解决方法.

今天在做一个crm客户关系小系统时,保存一个客户拜访信息时,在控制台出现了一个错误,

15:45:07.503 [http-nio-8080-exec-36] ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1]

并且前台页面出现404错误,后面找了好久,先是从映射文件中查找是否是某一个配置出错,后面又到后台查找,

最后又看了看前台,最后,发现问题出现在前台,因为我的是修改和保存都在同一个jsp页面上进行,使用的是saveOrUpdate()方法,所以会有客户拜访信息的主键id在页面上的隐藏回显,因为无论如何都有这个visit_id

<input  type="hidden"  name="visit_id" value="<s:property value="#saleVisit.visit_id" />"  />

即使是没有值,该input默认会显示为"",猜测应该是为 “” 的visit_id提交到了后台,后台判断visit_id不为空

执行了更新操作,但是在表中并没有visit_id=""的记录,所以报错

解决方法是:

<s:if test="#saleVisit!=null">
	<input  type="hidden"  name="visit_id" value="<s:property 	            value="#saleVisit.visit_id" />"  />
</s:if>

还有就是我换了另外一个种方法就是不管visit_id等于什么,我都使用save()进行保存,而不用saveOrUpdate(),结果运行成功,看来以后使用saveOrUpdate要小心了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值