22

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不断抛出该异常?即使参数存在?

4

2 回答 2

33

应该是这样的:

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

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

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

请注意,如果您的值包含%并且您希望它是一个实际的字母而不是通配符,您将不得不对其进行转义,这是一个转义类的示例。

于 2013-01-24T12:15:22.380 回答
3

尝试使用连接它hql

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

或使用CONCAT

"from UserProfile where firstName LIKE CONCAT('%', :name ,'%')"
于 2013-01-24T12:15:16.133 回答