2013-08-10 15 views
5

Dostaję bardzo dziwne zachowanie z JPA 2.0org.hibernate.QueryException: Nie wszystkie wymienione parametry zostały ustawione: []

Usiłuję zbudować kwerendę, która wygląda lubi, gdzie employeId i empDepartment są długie wartości przechodzące przez argumentów java

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

ale powyższe nie robi praca zapytania po raz pierwszy, to generujących powyższy błąd, ale gdy po raz drugi i ponownie trigged ten sam sposób wszystko, co poszło gładko, to dzieje się za każdym razem , jaki może być tego powód?

+1

Czy możesz pokazać nam całą metodę, w której to się dzieje? – chrylis

+1

Musisz mieć kilka instrukcji 'if' wokół wywołań' query.setParameter', które zatrzymują ich wykonywanie po raz pierwszy. Czy możesz opublikować pełną metodę, jak zasugerował @chrylis? –

Odpowiedz

0

Można spróbować to:

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

Jeśli to nie działa albo, niż tam może być problem z treścią zapytań, jak również, nie zastępując parametrów. Może te typy nie są poprawne. Typ parametru jest wywnioskowany przez kontekst.

+1

Cześć Dzięki za odpowiedź – 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); 

Nie wiem, jaki był tego powód, ale zdarzyło mi się to kiedyś. Spróbuj tego. Po prostu usuń białe spacje między =: empId i innym parametrem.

Powiązane problemy