1. /**
2. *entity
3. */
4. public class User implements Serializable {
5. private String username;
6. private String password;
7.
8. public String getUsername() {
9. return username;
10. }
11.
12. public void setUsername(String username) {
13. this.username = username;
14. }
15.
16. public String getPassword() {
17. return password;
18. }
19.
20. public void setPassword(String password) {
21. this.password = password;
22. }
23. }
24.
25. /**
26. *Action
27. */
28. public class UserAction{
29. private User user;
30. // UserDAO中在hibernate配置中作了事务代理
31. private IUserDAO userDAO;
32. public String saveUser() throws Exception {
33. userDAO.saveUser(user);
34. return "sucess";
35. }
36. public User getUser() {
37. return user
38. }
39. public void setUser(User user) {
40. this.user = user;
41. }
42. public void setUserDAO(IUserDAO userDAO) {
43. this.userDAO = userDAO;
44. }
45. public IUserDAO gerUserDAO() {
46. return userDAO;
47. }
48. }
49.
50. /**
51. *HTML
52. */
53. <form action="login.action">
54. <input type="text" name="user.userName"/>
55. <input type="password" name="user.password"/>
56. <input type="submit" value="注册">
57. </form> 当我象上面的代码通过用hibernate保存User对象时,User对象已变成一个被增强对象,通过Session.save(user)方法变成持久态对象时就会抛org.hibernate.MappingException: Unknown entity:entity.User$$EnhancerByCGLIB$$bd3dab68异常。
不知道是不是struts2中转型问题,还是其它原因,那位大哥指定下,谢谢!!
我的想法是,自己控制User对象的初始化。
25. /**
26. *Action
27. */
28. public class UserAction{
29. private User user=new User();
30. // UserDAO中在hibernate配置中作了事务代理
31. private IUserDAO userDAO;
32. public String saveUser() throws Exception {
33. userDAO.saveUser(user);
34. return "sucess";
35. }
36. public User getUser() {
37. return user
38. }
39. //public void setUser(User user) {
40. // this.user = user;
41. //}
. public void setUsername(String username) {
. this.user.setUsername(username);
. }
. public void setPassword(String password) {
. this.user.setPassword(password);
. } 42. public void setUserDAO(IUserDAO userDAO) {
43. this.userDAO = userDAO;
44. }
45. public IUserDAO gerUserDAO() {
46. return userDAO;
47. }
48. }
每次封装属性的时候,都是先从Action中getUser()获得user对象,然后,再调用相应的set方法来设置属性的
不new对象的时候,第一次执行getUser()的时候获得的是null,对null来调用设置属性方法的时候就抛异常了
private User user=new User(); //因为你要获得USER对象里的值必须要把这个对象给NEW出来
// UserDAO中在hibernate配置中作了事务代理
private IUserDAO userDAO;
public String saveUser() throws Exception {
userDAO.saveUser(user);
return "sucess";
}
public User getUser() {
return user
}
<input type="text" name="user.userName"/> //跟实体类里面的属性字段不一样
public void setUsername(String username) {
this.username = username;
}
该:<input type="text" name="user.username">