hibernate - tables - hql not in
Forma correcta de escribir un HQL en(...) consulta (3)
Es posible que las versiones anteriores de Hibernate no tengan el método setParameterList
en Query
. Aún puede llamar a setParameter("ids", listOfIds);
en el anterior para el mismo efecto.
Suponiendo que quiero escribir la siguiente consulta HQL:
FROM Cat c WHERE c.id IN (1,2,3)
¿Cuál es la forma correcta de escribir esto como una consulta parametrizada, por ejemplo,
FROM Cat c WHERE c.id IN (?)
Los parámetros nominales son mejores que los parámetros posicionales, debemos tener cuidado al mirar el orden / posición, mientras que el nombre es fácil.
Llamado:
Query query = session.createQuery("select count(*) from User"+" where userName=:userName and passWord=:passWord");
query.setString("userName", userName);
query.setString("passWord", passWord);
Posicional
Query query=em.createQuery("SELECT e FROM Employee e WHERE e.empId = ? and e.empDepartment = ?");
query.setParameter(1, employeId);
query.setParameter(2, empDepartment);
No estoy seguro de cómo hacer esto con el parámetro posicional, pero si puede usar parámetros con nombre en lugar de posicional, entonces el parámetro con nombre se puede colocar entre paréntesis y el método setParameterList de la interfaz de Query se puede usar para vincular la lista de valores a este parámetro.
...
Query query = session.createQuery("FROM Cat c WHERE c.id IN (:ids)");
query.setParameterList("ids", listOfIds);
...