用C的话说是传值传址问题,这是你帖的代码吧Query q=null;
q = session.createQuery("from FUser_master");
water=q.list();
for(int i=0;i<water.size();i++){
FUser_master user=new FUser_master();
user=(FUser_master)water.get(i);
users=(FUser_master)water.get(i);
System.out.println(user.getUm_name());
user.setUm_login_id(user.getUm_login_id()+i); /////更改的是主健值
////session.clear();session.save(user);
}更改的是主健值,这样的话报错org.hibernate.HibernateException: identifier of an instance of com.power.hibernate.FUser_master altered from 34 to 340

解决方案 »

  1.   

    我该了下,你看看Query q=null;
    q = session.createQuery("from FUser_master");
    water=q.list();
    for(int i=0;i<water.size();i++){
    FUser_master userNew=new FUser_master();
    FUser_master user=(FUser_master)water.get(i);
    System.out.println(user.getUm_name());
    userNew = user.clone();
    userNew.setUm_login_id(user.getUm_login_id()+i); /////更改的是主健值
    ////session.clear();session.save(user);
    }注意你的FUser_master要实现Cloneable接口;如果不想实现Cloneable接口就把userNew = user.clone();改为单个属性的get/set.你的代码user和users是同一个对象的ref