updateUser.jsp页面代码如下: <body>
<center>
<h2><font color="green">修改用户页面</font></h2><br/>
<s:form action="updateUser.action" method="post">
<s:hidden name="user.id" value="%{user.id}"></s:hidden>
<s:textfield name="user.name" value="%{user.name}" label="姓名"></s:textfield><br/>
<s:textfield name="user.password" value="%{user.password}" label="密码"></s:textfield><br/>
<s:textfield name="user.age" value="%{user.age}" label="年龄"></s:textfield><br/>
<s:submit value="修改"/>
</s:form>
</center>
</body>
UserAction.jave中的updateUser()方法如下:public String updatePUser() {
// 根据用户id查询相关信息
System.out.println("要删除的用户的id为:"+user.getId());
user = userService.findUserById(user);
return "success";
}
最后是实现的代码 public boolean updateUser(UserBean user) {
session.beginTransaction();
//第一种方法
/*UserBean user2=(UserBean)session.load(UserBean.class,user.getId());
user2.setName(user.getName());
user2.setPassword(user.getPassword());
user2.setAge(user.getAge());
session.update(user2);*/
//第二种方法
session.update(user);
System.out.println("修改用户成功!");
session.getTransaction().commit();
return true;
}(问题:第一种方法可以修改。。感觉麻烦,,第二种方法。出现错误: 求解?)
错误信息如下:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.chengge.bean.UserBean#11]
org.hibernate.engine.StatefulPersistenceContext.checkUniqueness(StatefulPersistenceContext.java:613)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:307)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:246)
org.hibernate.event.def.DefaultUpdateEventListener.performSaveOrUpdate(DefaultUpdateEventListener.java:56)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
org.hibernate.impl.SessionImpl.fireUpdate(SessionImpl.java:591)
org.hibernate.impl.SessionImpl.update(SessionImpl.java:579)
org.hibernate.impl.SessionImpl.update(SessionImpl.java:571)
<center>
<h2><font color="green">修改用户页面</font></h2><br/>
<s:form action="updateUser.action" method="post">
<s:hidden name="user.id" value="%{user.id}"></s:hidden>
<s:textfield name="user.name" value="%{user.name}" label="姓名"></s:textfield><br/>
<s:textfield name="user.password" value="%{user.password}" label="密码"></s:textfield><br/>
<s:textfield name="user.age" value="%{user.age}" label="年龄"></s:textfield><br/>
<s:submit value="修改"/>
</s:form>
</center>
</body>
UserAction.jave中的updateUser()方法如下:public String updatePUser() {
// 根据用户id查询相关信息
System.out.println("要删除的用户的id为:"+user.getId());
user = userService.findUserById(user);
return "success";
}
最后是实现的代码 public boolean updateUser(UserBean user) {
session.beginTransaction();
//第一种方法
/*UserBean user2=(UserBean)session.load(UserBean.class,user.getId());
user2.setName(user.getName());
user2.setPassword(user.getPassword());
user2.setAge(user.getAge());
session.update(user2);*/
//第二种方法
session.update(user);
System.out.println("修改用户成功!");
session.getTransaction().commit();
return true;
}(问题:第一种方法可以修改。。感觉麻烦,,第二种方法。出现错误: 求解?)
错误信息如下:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.chengge.bean.UserBean#11]
org.hibernate.engine.StatefulPersistenceContext.checkUniqueness(StatefulPersistenceContext.java:613)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:307)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:246)
org.hibernate.event.def.DefaultUpdateEventListener.performSaveOrUpdate(DefaultUpdateEventListener.java:56)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
org.hibernate.impl.SessionImpl.fireUpdate(SessionImpl.java:591)
org.hibernate.impl.SessionImpl.update(SessionImpl.java:579)
org.hibernate.impl.SessionImpl.update(SessionImpl.java:571)
UserBean.java类如下:package com.chengge.bean;public class UserBean { private int id;
private String name;
private String password;
private String age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public UserBean(int id, String name, String password, String age) { this.id = id;
this.name = name;
this.password = password;
this.age = age;
}
public UserBean(){
}
}UserAction.java类如下:package com.chengge.action;import java.util.List;
import java.util.Map;import org.apache.struts2.ServletActionContext;import com.chengge.bean.UserBean;
import com.chengge.service.UserService;
import com.chengge.service.impl.UserServiceImpl;public class UserAction { private UserBean user; private List<UserBean> userList; public List<UserBean> getUserList() {
return userList;
} public void setUserList(List<UserBean> userList) {
this.userList = userList;
} public UserService getUserService() {
return userService;
} public void setUserService(UserService userService) {
this.userService = userService;
} private UserService userService = new UserServiceImpl(); public UserBean getUser() {
return user;
} public void setUser(UserBean user) {
this.user = user;
} public String addUser() {
// 保存用户数据
this.userService.addUser(user);
return "success";
} public String userList() {
// 获得用户列表
userList = this.userService.findAllUser();
Map request = (Map) ServletActionContext.getContext().get("request");
request.put("userList", userList);
return "success";
} public String deleteUser() {
// 删除用户
if (userService.deleteUser(user)) {
return "success";
}
return "input";
} public String updatePUser() {
// 根据用户id查询相关信息
System.out.println("要删除的用户的id为:"+user.getId());
user = userService.findUserById(user);
return "success";
} public String updateUser() {
// 修改用户信息
System.out.println("修改用户的id为:"+user.getId());
if (userService.updateUser(user)) {
return "success";
}
return "input";
}}
//第一种方法
/*UserBean user2=(UserBean)session.load(UserBean.class,user.getId());
user2.setName(user.getName());
user2.setPassword(user.getPassword());
user2.setAge(user.getAge());
session.update(user2);*/
//第二种方法
user2.setName(user.getName());
user2.setPassword(user.getPassword());
user2.setAge(user.getAge());
System.out.println("修改用户成功!");
session.getTransaction().commit();
return true;我只知道这样可以
而且你的 updatePUser() findUserById(user)-->这里为什么是个user 不是 id?