org.hibernate.QueryException:并未设置所有命名参数:[id] [DELETE FROM User WHERE user_id =:id]

时间:2013-08-27 06:25:05

标签: spring hibernate

我使用spring和hibernate创建一个Q和A站点,我在删除用户时遇到错误.... 错误说明...... rg.hibernate.QueryException:并未设置所有命名参数:[id] [DELETE FROM User WHERE user_id =:id]

此错误已经解决,现在我的代码就是参考......

控制器..........

@RequestMapping(value = "/delete", method = RequestMethod.GET)
public ModelAndView deleteUser(@RequestParam("id") int user_id ) {
        userservice.deleteUser(user_id);
    return new ModelAndView("jsp/AdminUsers");

}

D A O ........

public void deleteUser(int user_id) {  
    User user = (User) sessionFactory.getCurrentSession().load(User.class, user_id);
    if(null!=user){
        sessionFactory.getCurrentSession().delete(user);
    }
}  

服务......

 public void deleteUser(int user_id) {  
        userDao.deleteUser(user_id);  
    } 

查看网页网址...

/delete.html?id=${user.user_id}"

1 个答案:

答案 0 :(得分:0)

我猜你得到的错误是因为你正在运行createQuery("DELETE FROM User WHERE user_id =:id ")executeUpdate而没有绑定:id参数。创建Query后,设置id参数,然后执行executeUpdate。此外,无需同时执行查询和以下delete

试试这个:

Query query = sessionFactory.getCurrentSession().createQuery("DELETE FROM User WHERE user_id =:id ");
query.setInteger("id", userId);
query.executeUpdate();