2017-04-19 8 views
-1

存在していなかった私は私のコードでこのクエリを持っている:例外:IllegalArgumentException - その名前のパラメータ[名前]は

return Long.parseLong(getEntityManager().createQuery(
"SELECT COUNT(a) FROM ApartmentExtraType a WHERE a.accommodation.id = :idacc AND (LOWER(a.name) LIKE :name)", 
Long.class) 
.setParameter("idacc", accommodation.getId()) 
.setParameter("name", "%" + filterQuery.getFieldFilter("name").toString().toLowerCase() + "%") 
getSingleResult().toString()); 

クエリは任意の要素が見つからない場合、私は何の問題もないが、それがで見つかった場合少なくとも1つの要素私はこのエラーがあります:

Last cause: Parameter with that name [name] did not exist WicketMessage: Error attaching this container for rendering: 
[WebMarkupContainer [Component id = tbody]] 

相対列の名前は「名前」です。他のクエリはこれと同一であると思われ、正常に動作します。私は問題が何であるかわからない

答えて

0

問題は、 "name"と呼ばれる渡しているパラメータの列名ではないようです。 "idacc"は正しく把握されているように見えます。

ので、この部分は文字列を渡してみて、それが

.setParameter("name", "ExampleName");

のようなものを動作するかどうかそれが正常に動作した場合、その後getFieldFilter機能

に何か問題がある参照

filterQuery.getFieldFilter("name").toString().toLowerCase()

が動作していません

+0

問題がgetFieldFilterの場合は制御しましたが、syste.outが正しい文字列を出力するため、私はそうは思わないと思います。 –

0

解決しました。問題は、ユーザーの入力によって異なり、このメソッドの1つでは、変数が正しくインスタンス化されていないため、問合せが異なるメソッドで構成されていたことです。したがって、JVMは[name]パラメータを使用してクエリの一部を見つけられませんでした。

関連する問題