2013-08-10 8 views
5

Ich bin immer sehr seltsame Verhalten von JPA 2.0org.hibernate.QueryException: Nicht alle benannten Parameter eingestellt wurden: []

Ich versuche, eine Abfrage zu erstellen, die gerne sieht, wo employeId und empDepartment sind

Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = :empId and e.empDepartment = :empDepartment"); 
query.setParameter("empId" ,employeId); 
query.setParameter("empDepartment",empDepartment); 

aber die obige Abfrage funktioniert nicht für die erste Zeit, es den obigen Fehler zu erzeugen, aber wenn das zweite Mal, dass ich die gleiche Methode trigged wieder alles verlief reibungslos, das passiert jedes Mal lange Werte durch Argumente java vorbei Was könnte der Grund dafür sein?

+1

Können Sie uns die gesamte Methode zeigen, wo dies geschieht? – chrylis

+1

Sie müssen einige 'if'-Anweisungen um die' query.setParameter'-Aufrufe haben, die verhindern, dass sie beim ersten Mal ausgeführt werden. Können Sie die vollständige Methode als @chrylis vorschlagen? –

Antwort

0

Sie können diese versuchen:

Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = ? and e.empDepartment = ?"); 
query.setParameter(1, employeId); 
query.setParameter(2, empDepartment); 

Wenn dies auch nicht funktioniert, als es auch ein Problem mit der Abfrage zufrieden sein, nicht mit dem Austausch der Parameter. Vielleicht sind die Typen nicht korrekt. Der Parametertyp wird vom Kontext abgeleitet.

+1

Hallo Danke für die Antwort – user2670113

0
Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId=:empId and e.empDepartment=:empDepartment"); 

query.setParameter("empId" ,employeId); 
query.setParameter("empDepartment",empDepartment); 

Ich weiß nicht, was der Grund war, aber es ist mir einmal passiert. Versuchen Sie es so. Entfernen Sie einfach Leerzeichen zwischen =: empId und dem anderen Parameter.

Verwandte Themen