在JPQL中,我可以通过以下方式检索实体:
query = entityManager.createQuery("select c from Category c"); List<Category> categories = query.getResultList();
但是,如果我想检索Category实体的id和name字段(仅),则需要像ResultSet对象这样的东西,通过它我可以说:rs.getString("name")和rs.getString("id")。如何在JPQL不检索整个实体的情况下做到这一点?
ResultSet
rs.getString("name")
rs.getString("id")
JPQL
基本上,对于如何检索像查询的信息:select c.id,c.name from Category c?
select c.id,c.name from Category c
在HQL中,可以使用list()函数获取包含结果行的Object []数组的列表:
Query query = session.createQuery("select c.id,c.name from Category c"); List<Object[]> rows = query.list();
返回数组中的第一个元素将是id,第二个-名称。
for (Object[] row: rows) { System.out.println(" ------------------- "); System.out.println("id: " + row[0]); System.out.println("name: " + row[1]); }
如果要使用hibernate的Criteria API,则应使用Projections。
使用JPA,它将以相同的方式工作:
List<Object[]> rows = entityManager.createQuery(queryString).getResultList();