querys listar lista left into fechas ejemplos datos con comparar hibernate orm hql jpql

left - listar datos con hibernate



¿Cómo recuperar solo ciertos campos de una entidad en JPQL o HQL? ¿Cuál es el equivalente de ResultSet en JPQL o HQL? (3)

En HQL puede usar la función list () para obtener una lista de la matriz Object [] que contiene filas de resultados:

Query query = session.createQuery("select c.id,c.name from Category c"); List<Object[]> rows = query.list();

en la matriz devuelta el elemento 1 st será id, second - name.

for (Object[] row: rows) { System.out.println(" ------------------- "); System.out.println("id: " + row[0]); System.out.println("name: " + row[1]); }

Si desea utilizar la API de criterios de hibernación, debe usar las Projections .

Con JPA funcionará de la misma manera:

List<Object[]> rows = entityManager.createQuery(queryString).getResultList();

En JPQL, puedo recuperar entidades por:

query = entityManager.createQuery("select c from Category c"); List<Category> categories = query.getResultList();

Pero, si deseo recuperar los campos de identificación y nombre (solo) de la entidad de Categoría, necesito algo como el objeto ResultSet , a través del cual puedo decir: rs.getString("name") y rs.getString("id") . ¿Cómo hacer esto a través de JPQL , sin recuperar toda la entidad?

Básicamente, para obtener información sobre cómo recuperar información de una consulta como: select c.id,c.name from Category c ?


No es el uso de la función .list() lo que hace que el resultado sea una List<Object[]> . Es la especificación de los campos ( c.id, c.name ) en la consulta HQL. Si tu consulta es

"select c from Category c"

Luego, query.list() devolverá un objeto List<Category> .


También puedes mapear directamente a la clase.

public class UserData { private String name; private Date dob; private String password; //setter } public UserData getUserData() { String queryString = "select user.name as name, user.dob as dob, user.userses.password as password from UserProfile user where user.userEmailId=''[email protected]''"; Query query = sessionFactory.getCurrentSession().createQuery(queryString); query.setResultTransformer(Transformers.aliasToBean(UserData.class)); return query.uniqueResult(); }