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要小心了.