Usando Hibernate, la ejecución de consultas SQL nativas se controla por medio de la interfaz SQLQuery
, la cual se obtiene llamando a Session.createSQLQuery()
. Las siguientes secciones describen cómo utilizar esta API para consultas
La consulta SQL más básica es para obtener a una lista de escalares (valores).
-
sess.createSQLQuery("SELECT * FROM Personas").list();
-
sess.createSQLQuery("SELECT ID,NOMBRE, EDAD FROM PERSONAS").list();
Estas retornarán una lista de objetos arrays (Object[]
) con valores escalares para cada columna en la tabla PERSONAS. Hibernate utilizará ResultSetMetadata
para deducir el orden real y los tipos de los valores escalares retornados.
Otro tipo de consulta más compleja, es la consulta de entidades. Para obtener los objetos entidades desde una consulta sql nativa, se utiliza por medio de addEntity()
.
-
sess.createSQLQuery("SELECT * FROM PERSONAS").addEntity(Persona.class);
-
sess.createSQLQuery("SELECT ID,NOMBRE,EDAD FROM PERSONAS").addEntity(Persona.class);
Se especifica esta consulta:
- La cadena de consulta SQL.
- La entidad devuelta por la consulta.
Asumiendo que Persona es mapeado como una clase con las columnas IDENTIFICACION, NOMBRE y FECHA DE NACIMIENTO las consultas anteriores devolverán una Lista en donde cada elemento es una entidad Persona.