我写的对数据库表的数据的修改DAO层//用户修改
public void updateManager(ManagerForm managerform) {

this.getHibernateTemplate().update(managerform);
}service层
//用户修改
public void updateManager(ManagerForm managerform){ this.objectdao.updateManager(managerform);
}
action:
 public String updateManager() throws Exception {

 this.objectservice.updateManager(managerform);
return "updateManager";
}映射文件是:<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>
    <class name="com.bean.ManagerForm" table="tb_manager" >
       <id name="id"  >
<generator class="native"/>
</id>
        <property name="account" />
        <property name="password" />
        <property name="managerLevel" />
    </class>
</hibernate-mapping>使用JSP页面对用户信息的 密码进行修改..
可是报这个错Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1 我百度了..上面说因为对 主键ID 进行了修改才会报错...可是我并没有修改主键啊.

解决方案 »

  1.   

    你可以先根据得到的主键先把数据get或load出来,然后改变,再何存,这样应该可以
      

  2.   

    主键和记录是对应的,你修改记录,肯定伴随着主键的修改啊,再说了,你欲修改记录,Hibernate怎么知道你要修改那条记录呢?
    你可以先把主键load出来,再来修改
      

  3.   

    主键记录有错误,你要指定一个在数据库存在的那条记录的主键ID,用load或者get方法获得是比较方便的做法,当然也可以手动set