微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TypedQuery 错误“并非所有命名参数都已设置” JPA / 休眠

如何解决TypedQuery 错误“并非所有命名参数都已设置” JPA / 休眠

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

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 与我的相似,但仍未得到答复。

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。