在ajax post之后有时候没有完成Hibernate更新

时间:2013-07-07 17:18:20

标签: ajax spring hibernate post

我有一个按钮,它在预定义的URL上调用ajax POST方法。在服务器完成它之后,它只是刷新页面

服务器从数据库中提取User对象并更新一列。

当页面刷新时,大约50%的时间,用户仍未更新,刷新的页面显示旧信息

注意 - 清除代码只显示相关的

Ajax post方法:

function buttonClick(){
   $.ajax({
      type : "POST",
      url : "?open_class=1",
      success : refresh()
   });
}

function refresh(){
   window.location = contextPath;
}

Spring MVC

@RequestMapping(value = "/manager/listofquestions", method = RequestMethod.POST)
public String listOfQuestionsPost(
        Model model,
        HttpServletRequest request,
        Principal principal) {

    if(request.getParameter("open_class") != null){
        userService.openClass(principal.getName());
    }
    return "success";
}

UserService

@Transactional
public void openClass(String name) {
    User user = userDao.getByName(name);
    user.setCodeword(codeWordService.GetNewCodeWord());
    userDao.update(user);
}

userDAO的

public User update(User user) {
    sessionFactory.getCurrentSession().update(user);
    return user;
}

public User getByName(String userName) {
    Query query = sessionFactory.getCurrentSession().createQuery("from User where username=?");
    query.setString(0, userName);
    query.setCacheable(true);
    Object[] list = query.list().toArray();
    if(list.length == 0) {
        return null;
    }
    return (User) list[0];
}

1 个答案:

答案 0 :(得分:0)

原来我没能正确使用Ajax。 ajax post一启动就调用了refresh方法,这就是为什么页面刷新得太快了。你需要这样做:

success: function() { refresh(); }

或者像我最终做的那样使用Jquery帖子

最终确定它 - 问题不是hibernate。但是,谢谢你的支持