Dau*_*aud 19 orm hibernate hql jpql
在JPQL中,我可以通过以下方式检索实体:
query = entityManager.createQuery("select c from Category c");
List<Category> categories = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
但是,如果我想检索Category实体的id和name字段(仅),我需要像ResultSet对象这样的东西,通过它我可以说:rs.getString("name")和rs.getString("id").如何在JPQL不检索整个实体的情况下完成此操作?
基本上,对于如何从一个查询信息,如:select c.id,c.name from Category c?
dim*_*mas 40
在HQL中,您可以使用list()函数来获取包含结果行的Object []数组列表:
Query query = session.createQuery("select c.id,c.name from Category c");
List<Object[]> rows = query.list();
Run Code Online (Sandbox Code Playgroud)
在返回的数组中,1-st元素将是id,second-name.
for (Object[] row: rows) {
System.out.println(" ------------------- ");
System.out.println("id: " + row[0]);
System.out.println("name: " + row[1]);
}
Run Code Online (Sandbox Code Playgroud)
如果要使用hibernate的Criteria API,则应使用Projections.
使用JPA,它将以相同的方式工作:
List<Object[]> rows = entityManager.createQuery(queryString).getResultList();
Run Code Online (Sandbox Code Playgroud)
car*_*tax 11
结果不是使用.list()函数本身List<Object[]>.它是c.id, c.nameHQL查询中fields()的规范.如果您的查询是
"select c from Category c"
Run Code Online (Sandbox Code Playgroud)
然后query.list()会返回一个List<Category>对象.
| 归档时间: |
|
| 查看次数: |
54849 次 |
| 最近记录: |