Hibernateは検出を続けます
org.hibernate.QueryParameterException: could not locate named parameter [name]
存在していても。ここに私のHQLがあります
Query query = sess().createQuery("from UserProfile where firstName LIKE '%:name%'").setParameter("name", name);
なぜ休止状態がその例外をスローし続けるのですか?パラメータが存在していても?
次のようになります。
Query query = sess().createQuery("from UserProfile where firstName LIKE :name")
.setParameter("name", "%"+name+"%");
あなたの場合、':name'
はHibernateが検索する実際の文字列です。実際の名前付きパラメーターが必要な場合は、:name
だけが必要です。
したがって、%
は:name
の値として渡される必要があり、Hibernateは:name
を実際の値に置き換えます。
値に%
が含まれており、ワイルドカードではなく実際の文字にする場合は、エスケープする必要があることに注意してください。 here is エスケープクラスの例.
hql
を使用して連結してみてください
"from UserProfile where firstName LIKE '%' || :name || '%'"
またはCONCAT
を使用して
"from UserProfile where firstName LIKE CONCAT('%', :name ,'%')"