【问题标题】:TypedQuery error "Not all named parameters have been set" when they had. JPA / HibernateTypedQuery 错误“未设置所有命名参数”。 JPA/休眠
【发布时间】:2021-08-03 07:10:54
【问题描述】:

我正在尝试构建和执行如下所示的动态查询:

String query = "SELECT e FROM Employee e WHERE (1=1) AND (UPPER(e.lastName) LIKE :lastName)";

final TypedQuery<Employee> dbQuery = entityManager.createQuery(query, Employee.class);
dbQuery.setParameter("lastName", "%" + value.toString().toUpperCase() + "%"));

但它失败并出现此错误:

org.hibernate.QueryException: Not all named parameters have been set: [lastName]

最有趣的是,在调试模式中,我可以看到 dbQuery 绑定了“lastName”参数,并在其“parameterRegistrations”字段中包含指定值。所以我不知道。

使用位置参数的替代方法,例如 dbQuery.setParameter(1, "%" + value.toString().toUpperCase() + "%")); 不是我的情况,所以请不要讨论它。

question 与我的相似,但仍未得到答复。

【问题讨论】:

  • 您使用的是哪个 Hibernate 版本?您确定您的实际查询的参数名称中没有拼写错误(大写/小写)?
  • 您能否确认调用dbQuery.getResultList()指令时抛出了异常?

标签: java hibernate jpa jpql


【解决方案1】:

对不起各位!这是我的疏忽。那里有一个超级奇怪的遗留代码,它在很久以后根据我的查询创建了一个新的 TypedQuery 实例,但没有参数。我没想到。这就是原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多