当前位置: 首页 > 知识库问答 >
问题:

rg.hibernate。QueryException:未设置所有命名参数:[id][从用户中删除,其中User_id=:id]

郤瀚
2023-03-14

我正在使用spring和hibernate创建一个Q和a站点,我在删除用户时遇到了一个错误…错误状态是…rg.hibernate。QueryException:未设置所有命名参数:[id][从用户中删除,其中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);  
    } 

查看页面URL...

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

共有1个答案

殳经略
2023-03-14

我猜您得到的错误是因为您正在运行createQuery("DELETE BY User WHEREuser_id=: id")执行更新而没有绑定: id参数。创建Query后,设置id参数,然后执行执行更新。此外,无需同时执行查询和以下删除

试试这个:

Query query = sessionFactory.getCurrentSession().createQuery("DELETE FROM User WHERE user_id =:id ");
query.setInteger("id", userId);
query.executeUpdate();
 类似资料:
  • 我在JPA 2.0中发现了非常奇怪的行为 我正在尝试构建一个看起来像这样的查询,其中 employeId 和 empDepartment 是通过 java 参数传递的长值。 但是上面的查询第一次不工作,它产生了上面的错误,但是当我第二次再次触发相同的方法时,一切都很顺利,每次都是这样,这是什么原因呢?

  • 我使用PostgreSQL和hibernate 我有这个功能: 运行我的项目后 我有这个错误: 当我运行这个查询时: 从decision中选择max(null(split_part(num_ordre_decision),“/”,3),”::int) 在数据库中我有正确的结果 例如,与数据库中的此类数据相关: 我有 1001 但我的问题和冬眠有关

  • 我有一个带有两个字段的简单Person实体: 一个JpaRepository,我在其中重写findAll方法以根据用户角色限制记录: 上述设置工作正常。但当我将查询更新为以下内容时,它会抛出如下异常。似乎无法解析SpEL表达式。 有问题的查询: 例外: 我尝试了以下选项,但得到了相同的例外: 1)用=替换赞 2) 设置硬编码 ID: 有什么建议吗? 仅供参考: 我有Spring的靴子1.3.6.R

  • 我得到这个例外: Java方法 public void getAllRevisions() {

  • 我正在jpa中设置本机查询,但它没有按预期运行并给我异常这是我的查询:

  • 问题内容: 我想执行一个简单的本机查询,但是它不起作用: 为什么会出现此异常? 问题答案: JPA在本机查询中不支持命名参数,仅对于JPQL。您必须使用位置参数。 命名参数遵循第4.4.1节中定义的标识符规则。命名参数的使用适用于Java Persistence查询语言,而不是为本机查询定义的。 仅位置参数绑定可用于本机查询。 所以用这个 尽管JPA规范在本机查询中不支持命名参数,但某些JPA实现