休眠无法找到命名参数,即使它存在

2022-09-02 01:03:58

休眠 不断检测

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

即使它存在。这是我的hql

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

为什么休眠不断引发该异常?即使参数存在?


答案 1

应该像这样:

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

在你的情况下是实际的字符串Hibernate将搜索。如果需要具有实名称参数,则只需具有 .':name':name

因此,应作为 的值传递,并且休眠将替换为实际值。%:name:name

请注意,如果您的值包含并且您希望它是实际字母而不是通配符,则必须对其进行转义,下面是一个 escaper-class 的示例。%


答案 2

尝试使用hql

"from UserProfile where firstName LIKE '%' || :name || '%'"

或使用CONCAT

"from UserProfile where firstName LIKE CONCAT('%', :name ,'%')"

推荐