java - 即使存在,Hibernate 也无法找到命名参数

标签 java hibernate hql named-parameters

Hibernate 不断检测

org.hibernate.QueryParameterException: could not locate named parameter [name]

即使它存在。这是我的总部

Query query = sess().createQuery("from UserProfile where firstName LIKE '%:name%'").setParameter("name", name);

为什么hibernate总是抛出这个异常?即使参数存在?

最佳答案

应该是这样的:

Query query = sess().createQuery("from UserProfile where firstName LIKE :name")
                    .setParameter("name", "%"+name+"%");

在您的情况下, ':name' 是 Hibernate 将搜索的实际字符串。如果你需要一个真正的命名参数,你只需要:name

因此 % 应该作为 :name 的值传递,Hibernate 将用实际值替换 :name

注意,如果你的值包含 % 并且你希望它是一个实际的字母而不是通配符,你必须将它转义,here is一个逃逸类的例子。

关于java - 即使存在,Hibernate 也无法找到命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14501094/

相关文章:

java - 过滤 Criteria list() 中的实体

java - 不使用按钮展开 Bottom Sheet

java - 数据库表 JNDI 名称问题

mysql - 当在MySQL Workbench中工作时,Jpa Criteria等于表的String属性的谓词(带有newLine字符'\n')不起作用

java - 消息 -"could not read a hi value - you need to populate the table: hibernate_sequence"

jpa - 在 WHERE 中使用 "CASE WHEN"语句进行查询会导致 QuerySyntaxException : unexpected AST

java - 按父对象设置的子对象的值对父对象进行排序

java - 如何使用 JPA 和 Hibernate 从表中选择最后插入的 5 条记录

java - Jsoup选择不同的Div类型并依次处理

Java Twitch Bot/Pirc Bot 无法像它必须做的那样读取 .text 文件中的命令