在使用hibernate更新操作时出现org.hibernate.StaleStateException

org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

错误原因:

使用hibernate的saveOrUpdate方法保存实例。saveOrUpdate方法要求ID为null时才执行SAVE, 在其它情况下执行UPDATE。在保存实例的时候是新增,但你的ID不为null,所以使用的是UPDATE,但是数据库里没有主键相关的值,所以出现异 常。

在Action中JAVA代码:

public String updateStudent(){

Student s = new Student();

try {
BeanUtils.copyProperties(s, student); //利用反射机制对JavaBean的属性进行处理,减少代码量
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

s.setId(id); //将页面中获得要更新学生的id号
studentService.updateStudent(s);

return querystudent();
}

注意:BeanUtils导入的是org.apache.commons.beanutils.BeanUtils。

用法可查看下面链接http://www.cnblogs.com/fayf/archive/2008/08/21/1272982.html

以上仅代表个人观点,欢迎大家拍砖(*^_^*)

时间: 2024-10-19 00:57:09

在使用hibernate更新操作时出现org.hibernate.StaleStateException的相关文章

Redux在处理庞大Store并频繁进行更新操作时的性能

Q:当你拥有一个相当大的 SPA 拥有许多状态,因为有很多页面,模块,子模块和许多元素.所有子状态都关联 App 中不同的关注点,子状态由它们自己的 reducer 处理.但是当进行非常频繁的更新操作,所有的 reducer 都将被调用. 当拥有一个如下的 store: store: { subStore1: { subSubstore1: {} ... subSubstore10: {} }, subStore2: { subSubstore1: {} ... subSubstore10: {

DSR 系统开发记录(2014年7月25日):Hibernate User Type 更新操作

今天遇到的问题是在 VisitRecord 编辑保存之后,MedicineComment 中的 Medicine 属性就变成 null 了.经过简单的调查之后发现,在做更新操作时,起作用的并不是 UserType 的 nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session) 方法,而是 Object replace(Object original, Object target, O

Hibernate更新数据报错:a different object with the same identifier value was already associated with the session: [com.elec.domain.ElecCommonMsg#297e35035c28c368015c28c3e6780001]

使用hibernate更新数据时,报错 Struts has detected an unhandled exception: Messages: a different object with the same identifier value was already associated with the session: [com.elec.domain.ElecCommonMsg#297e35035c28c368015c28c3e6780001] a different object w

Hibernate批处理操作优化 (批量插入、更新与删除)

问题描述 我开发的网站加了个新功能:需要在线上处理表数据的批量合并和更新,昨天下午发布上线,执行该功能后,服务器的load突然增高,变化曲线异常,SA教育了我一番,让我尽快处理,将CPU负载降低. 工作所需,我经常要写些程序批量处理数据,每次执行几十万数据处理的时候,我机子的CPU都会飙高,而且数据处理速度会越来越慢.比如第一个1W条要5分钟,第二个1W条就要10分钟,要干其他事情的时候机子也卡的不行,只能等着处理完数据. 其实我一直认为是数据量太大,从来不认为是程序问题,所以一直没怎么关注过.

无法更新运行时文件夹共享状态:在客户机操作系统内装载共享文件夹文件系统时出错--解决办法

1.问题描述: 在物理主机和虚拟机CentOS6.4共享文件的时候出现:无法更新运行时文件夹共享状态:在客户机操作系统内装载共享文件夹文件系统时出错 其他症状: vmware-hgfsclient  能够看到共享的文件夹名字 mount.vmhgfs  .host:/ /mnt  报错: Error: cannot mount filesystem: No such device 2.解决思路 /etc/vmware-tools/services.sh restart 如果出现FAILD yum

Replicate_Do_DB 参数发现跨库操作时从库数据不更新

问题:使用复制是设置  Replicate_Do_DB 参数发现跨库操作时从库数据不更新 1 设置从库的 replicate_do_db = test 2 主库的sql语句是跨库的insert    在test7 上插入数据到test.a 的表上. use test7; 3 主库数据更新后查看从库信息发现数据并没有插入 4 原因是mysql 在执行sql前检查的当前默认库,所以跨库的sql语句不会被执行. 解决方案: 1 使用参数   replicate-wild-ignore-table =t

JAVAWEB开发之Hibernate详解(一)——Hibernate的框架概述、开发流程、CURD操作和核心配置与API以及Hibernate日志的使用

Hibernate框架概述 什么是Hibernate? 框架:软件的半成品,完成部分代码的功能. Hibernate:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思想来操作数据库.Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序中使用,也可以在Servlet/JSP的web应用程序中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成

Hibernate级联操作解密(inverse和cascade)

总结: Cascade:对级联操作进行限制,有如下几个参数: all : 所有情况下均进行关联操作.  none:所有情况下均不进行关联操作.这是默认值.  save-update:在执行save/update/saveOrUpdate时进行关联操作.  delete:在执行delete时进行关联操作. Inverse:在一对多模型中,只能在一的一方设置,inverse的作用就是在级联发生后,会再次更新子表数据的外键为主表的主键.确保子表外键不会为空. 下面演示一个班级学生的例子(一对多): 班

Hibernate关联操作、查询操作、高级特性、并发处理机制

本文所需的数据库初始文件,Hibernate常用操作的完整示例代码(包含所有Hibernate操作所需jar文件)提供下载学习:http://download.csdn.net/detail/daijin888888/9551724 1.Hibernate关联映射 1)什么是关联映射? 如果表之间具有关联关系,Hibernate允许我们在hbm.xml中描述他们的关联关系,然后在我们操作其中一张表时,自动的根据这种关系操作到另外的关系表,那么这种关联关系的设置,我们称之为关联映射. 2)关联映射