简体   繁体   中英

Hibernate could not locate named parameter even if it exist

Hibernate Keeps detecting

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

even though it exist. here's my hql

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

Why does hibernate keeps throwing that exception? even though the parameter exist?

Should be like this:

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

In your case ':name' is actual string Hibernate will search for. If you need to have a real named parameter, you need to have just :name .

Thus % should be passed as a value of :name and Hibernate will substitute :name with actual value.

Note, that if your value contains % and you want it to be an actual letter instead of wildcard, you'll have to escape it, here is an example of escaper-class.

try to concatenate it using hql

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

or using CONCAT

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM