I parametri denominati sono migliori dei parametri posizionali, dovremmo stare attenti a osservare l'ordine/posizione, mentre named è semplice.
denominato:
Query query = session.createQuery("select count(*) from User"+" where userName=:userName and passWord=:passWord");
query.setString("userName", userName);
query.setString("passWord", passWord);
posizionale:
Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = ? and e.empDepartment = ?");
query.setParameter(1, employeId);
query.setParameter(2, empDepartment);
fonte
2017-02-24 12:05:49
Perché ciò è stato cambiato in ogni modo? Ho appena trascorso un'ora a capire perché 'IllegalArgumentException in classe: org.ase.mip.persistence.entities.BaseEntityImpl, metodo getter di proprietà: id (BasicPropertyAccessor.java:186))' stava succedendo. Ho chiamato 'setParameter' invece di' setParameterList'. DOH! – opncow