数据库中更新信息时,id要相同(id为主键),可以办到吗?

如题,我现在报这个错误:org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.bysj.songxy.domain.Teachers#2]
我用的是springmvc架构
DAO层:
public void update(T o){
getSession().update(o);
}

service层:
public ResultBase update(Long id,String password) {
ResultBase ret = new ResultBase();
Teachers teachers = new Teachers();
teachers.setId(id);
teachers.setPassword(Md5Util.md5Others(password));
teachersDAO.update(teachers);
ret.setResult(ResultBase.RESULT_SUCC);
return ret;
}

controller层:
public String goTpasswordchange(Long id,String oldpassword,String password, ModelMap map){

Teachers teachers = teachersService.findById(id);
map.addAttribute("id", id);
String Mpasseord=Md5Util.md5Others(oldpassword);
System.out.println(Mpasseord);
System.out.println(teachers.getPassword());
if(teachers.getPassword().equals(Mpasseord)){
teachersService.update(id,password);
System.out.println("修改成功");
return "main/Tindex";
}
else{
System.out.println("修改失败");
return "main/Tpasswordchange";
}
}

有木有大神知道怎么修改?很急,在线等

顶一下,有木有大神T T

数据库中更新信息时,id要相同(id为主键),是什么意思?更新操作,主键是唯一,不变的,怎么要相同呢

就是我要更新一个人的信息,比如修改密码,这时我想让这个人的ID不变,这个没办法办到吗?

update student set password="123456" where id="22";
你通过这样的就可以修改密码了,id是主键是不会改变的;如果是多个就如下:
update student set (name,age,password) values("李四",23,"123456") where id="22";
你可以试试,上面是根据你的解释写的

如果回答对你有帮助,请采纳。

你确定id字段你设计为primary key了吗?

student.setPassword("123456");
studentService.update(student);

已经解决了,谢谢大家了

原则上,更新是更新所有字段,但只改变不同的值呀。所以ID你不去动它,它还是原来的值。