Sentencias HQL en hibernate

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

HQL es el lenguaje de consultas que usa Hibernate para recuperar información y manipular la base de datos. Su sintaxis recuerda mucho a SQL, pero las consultas no se realizarán sobre las tablas de la base de datos, sino sobre los objetos vinculados a una tabla en la base de datos.

Definir consultas

//recupero una colección de objetos
TypedQuery<Libro> hqlQuery1 = session.createQuery("FROM  Libro");
//recupero un String en vez de un objeto
TypedQuery<String> hqlQuery2 = session.createQuery("SELECT v.matricula FROM Vehiculo v");
//Consulta ordenada
TypedQuery<Libro> hqlQuery3 = session.createQuery("FROM Libro ORDER BY id");
//Consulta con condiciones
TypedQuery<Libro> hqlQuery4 = session.createQuery("FROM Libro WHERE precio>10 AND anio_publicacion>1984");

Ejecutar consulta

List<Libro> libros = hqlQuery.getResultList();
Libro libro = hqlQuery.getSingleResult();

Eliminar un registro

TypedQuery<Paciente> hqlQuery = session.createQuery("DELETE FROM Paciente WHERE id=:condicion");
hqlQuery.setParameter("condicion", 4);
hqlQuery.executeUpdate();

Consulta relacionada

Evaluar si una propiedad del bean es igual a cierto valor
(no funciona si la propiedad es una lista)

String queryString = "FROM Libro l WHERE l.autor.nombre LIKE :condicion";

Evaluar si uno de los los elementos de la propiedad del bean consultado es igual a cierto valor

String queryString = " SELECT a FROM Autor a JOIN a.libros l WHERE l.titulo='titulox11'";
TypedQuery hqlQuery = session.createQuery(queryString);

Nota: La siguiente línea es equivalente a la línea en verde (pero utilizando join):

String queryString = "SELECT l FROM Libro l JOIN l.autor a WHERE a.nombre='nombre1'";

Las palabras escritas en rojo son propiedades de las clases, no son campos de la base de datos.

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.