【问题标题】:Update on hibernate and spring MVC not working更新休眠和春季 MVC 不工作
【发布时间】:2014-07-04 11:52:25
【问题描述】:

我无法在编辑表格后更新表格,因为当我调试和呈现 DAO 文件中的所有值时它工作正常,但在 dao 实施之后,它没有在用户列表上显示相同的更新值。我特此附上我的代码:

JSP 文件:

<form:form id="editForm" modelAttribute="user" action="update">
<div style="width: 400px; padding: 10px; border: 5px solid gray; margin: 0px;">
<table width="400px" height="150px">

<tr><td><font face="Arial">First Name:</font></td>
<td><input name="licenseNumber" value="${model.user.firstName}"></td></tr>
<tr><td><font face="Arial">Last Name:</font></td>
<td><input name="licenseNumber" value="${model.user.lastName}"></td></tr>

<tr><td><font face="Arial">Gender:</font></td>
<td><input name="licenseNumber" value="${model.user.gender}"></td></tr>
<tr><td><font face="Arial">City Name:</font></td>
<td><input name="licenseNumber" value="${model.user.city}"></td></tr>

<tr><td></td><td>
<input type="submit" value="Edit" />
<br>
<a href="userList.html" >Cancel</a>
</td></tr>
</table>
</div>
</form:form>

道法:

@Override
public void updateUser (User user)
{
    /*Transaction tx = session.beginTransaction();*/

    sessionfactory.getCurrentSession().merge(user);
}

服务类

@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class UserServiceImpl implements UserService {

    @Autowired
    UserDao userDao;

    @Override
    public void addUser(User user) 
    {
        userDao.saveUser(user);
    }

    @Override
    public List<User> getUser() 
    {
        return userDao.getUser();
    }

    @Override
    public User getUser(int id) 
    {
        return userDao.getUser(id);
    }

    @Override
    public void updateUser(User user)
    {
        userDao.updateUser(user);
    }
}

控制器类

@RequestMapping(value = "/edit", method = RequestMethod.GET)  
public ModelAndView editUserData(@ModelAttribute("user") User user,  
   BindingResult result) {  
  Map<String, Object> model = new HashMap<String, Object>();  
  model.put("user", userService.getUser(user.getId()));  
  return new ModelAndView("Edit","model",model);
 } 

@RequestMapping(value = "/update", method = RequestMethod.POST)  
public ModelAndView updateUserData(@ModelAttribute("user") User user,  
   BindingResult result,SessionStatus status) {  
   userService.updateUser(user);
   status.setComplete();
   return new ModelAndView("redirect:/userList.html");
 } 

【问题讨论】:

    标签: java spring hibernate jsp


    【解决方案1】:

    试试

    1. 通过更新

      更改合并

      sessionFactory.getCurrentSession().update(user);

    2. 如果 1 不起作用,请尝试:

      sessionfactory.getCurrentSession().merge(user); sessionFactory.getCurrentSession().update(user);

    【讨论】:

      【解决方案2】:

      您将所有@Transactional 方法设置为readOnly="true"。您应该覆盖所有在数据库中进行更改的方法。

      @Service
      @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
      public class UserServiceImpl implements UserService {
      
          @Autowired
          UserDao userDao;
      
          @Override
          @Transactional(propagation = Propagation.SUPPORTS, readOnly = false)
          public void addUser(User user) 
          {
              userDao.saveUser(user);
          }
      
          @Override
          public List<User> getUser() 
          {
              return userDao.getUser();
          }
      
          @Override
          public User getUser(int id) 
          {
              return userDao.getUser(id);
          }
      
          @Override
          @Transactional(propagation = Propagation.SUPPORTS, readOnly = false)
          public void updateUser(User user)
          {
              userDao.updateUser(user);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 2013-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多