Hibernate continue de détecter
org.hibernate.QueryParameterException: could not locate named parameter [name]
même si elle existe. voici mon hql
Query query = sess().createQuery("from UserProfile where firstName LIKE '%:name%'").setParameter("name", name);
Pourquoi hibernate continue de lever cette exception? même si le paramètre existe?
Devrait être comme ça:
Query query = sess().createQuery("from UserProfile where firstName LIKE :name")
.setParameter("name", "%"+name+"%");
Dans ton cas ':name'
est la chaîne réelle qu'Hibernate recherchera. Si vous devez avoir un vrai paramètre nommé, vous devez simplement avoir :name
.
Donc %
doit être transmis comme une valeur de :name
et Hibernate remplacera :name
avec valeur réelle.
Notez que si votre valeur contient %
et vous voulez que ce soit une lettre réelle au lieu d'un caractère générique, vous devrez y échapper, voici un exemple de classe escaper.
essayez de le concaténer en utilisant hql
"from UserProfile where firstName LIKE '%' || :name || '%'"
ou en utilisant CONCAT
"from UserProfile where firstName LIKE CONCAT('%', :name ,'%')"