Hibernate继续检测
org.hibernate.QueryParameterException: could not locate named parameter [name]
即使它存在。这是我的hql
Query query = sess().createQuery("from UserProfile where firstName LIKE '%:name%'").setParameter("name", name);
为什么hibernate会一直抛出异常?即使参数存在?
答案 0 :(得分:26)
应该是这样的:
Query query = sess().createQuery("from UserProfile where firstName LIKE :name")
.setParameter("name", "%"+name+"%");
在你的情况下,':name'
是Hibernate将搜索的实际字符串。如果您需要一个真正的命名参数,则需要:name
。
因此,%
应作为:name
的值传递,而Hibernate会将:name
替换为实际值。
请注意,如果您的值包含%
,并且您希望它是一个实际的字母而不是通配符,则必须将其转义,here is一个escaper-class示例。
答案 1 :(得分:3)
尝试使用hql
"from UserProfile where firstName LIKE '%' || :name || '%'"
或使用CONCAT
"from UserProfile where firstName LIKE CONCAT('%', :name ,'%')"