HQL
HQL (Hibernate Query Language) es un lenguaje de consulta similar a SQL pero específicamente diseñado para trabajar con entidades de Hibernate en lugar de tablas de base de datos directamente. Aquí te dejo una lista de los comandos más típicos de consultas HQL con ejemplos:
1. Selección Básica (SELECT)
FROM EntityName
Ejemplo:
FROM Employee
2. Selección con Filtrado (WHERE)
FROM EntityName WHERE condition
Ejemplo:
FROM Employee WHERE department = 'Sales'
3. Selección con Alias
SELECT alias FROM EntityName alias
Ejemplo:
SELECT e FROM Employee e
4. Selección de Propiedades Específicas
SELECT alias.property1, alias.property2 FROM EntityName alias
Ejemplo:
SELECT e.name, e.salary FROM Employee e
5. Condiciones de Igualdad y Comparación
FROM EntityName WHERE property = value
FROM EntityName WHERE property > value
Ejemplo:
FROM Employee WHERE salary > 50000
6. Uso de Parámetros (Named Parameters)
FROM EntityName WHERE property = :parameter
Ejemplo:
FROM Employee WHERE name = :name
Y luego en el código se establece el valor del parámetro:
query.setParameter("name", "John");
7. Uso de Parámetros Posicionales
FROM EntityName WHERE property = ?1
Ejemplo:
FROM Employee WHERE name = ?1
Y luego en el código se establece el valor del parámetro:
query.setParameter(1, "John");
8. Ordenamiento (ORDER BY)
FROM EntityName ORDER BY property ASC|DESC
Ejemplo:
FROM Employee ORDER BY salary DESC
9. Uniones (JOIN)
FROM EntityName alias INNER JOIN alias.property
FROM EntityName alias LEFT JOIN alias.property
Ejemplo:
FROM Employee e INNER JOIN e.department d
10. Agrupación (GROUP BY) y Funciones de Agregación
SELECT alias.property, count(alias) FROM EntityName alias GROUP BY alias.property
Ejemplo:
SELECT e.department, count(e) FROM Employee e GROUP BY e.department
11. Tener (HAVING)
SELECT alias.property, count(alias) FROM EntityName alias GROUP BY alias.property HAVING count(alias) > value
Ejemplo:
SELECT e.department, count(e) FROM Employee e GROUP BY e.department HAVING count(e) > 10
12. Actualización (UPDATE)
UPDATE EntityName SET property = value WHERE condition
Ejemplo:
UPDATE Employee SET salary = 60000 WHERE id = 1
13. Eliminación (DELETE)
DELETE FROM EntityName WHERE condition
Ejemplo:
DELETE FROM Employee WHERE id = 1
14. Subconsultas
FROM EntityName WHERE property IN (subquery)
Ejemplo:
FROM Employee WHERE department.id IN (SELECT d.id FROM Department d WHERE d.name = 'Sales')
Estos son los comandos y estructuras más comunes de HQL. Cada uno de ellos se puede combinar y expandir para consultas más complejas según sea necesario.