2017-04-19 3 views
-1

ich diese Abfrage auf meinem Code haben:Illegal - Parameter mit diesem Namen [name] existierte nicht

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()); 

Wenn die Abfrage finden keine Elemente ich kein Problem, aber wenn es sich bei mindestens ein Element Ich habe diesen Fehler:

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

Der Name der relativen Spalte ist "Name" und ich bin mir sicher. Andere Abfrage scheint identisch zu sein und sie funktionieren gut. Ich weiß nicht, welches das Problem ist

Antwort

0

Sieht aus wie das Problem nicht mit dem Spaltennamen ist, ist es mit dem Parameter übergeben Sie namens "name". Der "idacc" sieht aus wie er richtig gegriffen wurde.

So ist dieser Teil nicht funktioniert

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

Versuchen in einem String vorbei und sehen, ob das so etwas wie

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

funktioniert Wenn das fein läuft, dann gibt es etwas falsch mit der getFieldFilter Funktion

+0

Ich kontrollierte, ob das Problem der GetFieldFilter war, aber ich denke nicht, weil das syste.out die richtige Zeichenfolge druckt. –

0

ich gelöst. Das Problem bestand darin, dass die Abfrage in einer anderen Methode erstellt wurde, da sie abhängig von der Benutzereingabe variierte und in einer dieser Methoden eine Variable schlecht instanziiert wurde. Daher hat die JVM den Teil der Abfrage nicht mit dem Parameter [name] gefunden.

Verwandte Themen