Parametry o nazwach są lepsze niż parametry pozycyjne, powinniśmy być ostrożni przy patrzeniu na kolejność/pozycję - podczas gdy nazwa jest łatwa.
Nazwany:
Query query = session.createQuery("select count(*) from User"+" where userName=:userName and passWord=:passWord");
query.setString("userName", userName);
query.setString("passWord", passWord);
pozycyjne:
Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = ? and e.empDepartment = ?");
query.setParameter(1, employeId);
query.setParameter(2, empDepartment);
Dlaczego ta została zmieniona tak czy inaczej? Po prostu spędziłem godzinę zastanawiając się, dlaczego wystąpił wyjątek 'IllegalArgumentException w klasie: org.ase.mip.persistence.entities.BaseEntityImpl, getter method of property: id (BasicPropertyAccessor.java:186))'. Nazwałem 'setParameter' zamiast' setParameterList'. DOH! – opncow