如何获取自定义对象列表,例如查询以下结果:
SELECT p.category.id, count(p.id) FROM Product p left join p.category c WHERE p.seller.id=:id GROUP BY c.id
例如:
return getEntityManager().createQuery("SELECT p.category.id, count(p.id) FROM Product p left join p.category c WHERE p.seller.id=:id GROUP BY c.id").setParameter("id", id).getResultList();
我需要一张带有类别ID和类别中产品数量的地图。
不幸的是,JPA没有提供一种标准的方法来检索中的结果Map。但是,通过遍历结果列表来手动构建地图非常简单:
Map
TypedQuery<Object[]> q = getEntityManager().createQuery( "SELECT c.id, count(p.id) " + "FROM Product p LEFT JOIN p.category c " + "WHERE p.seller.id = :id " + "GROUP BY c.id", Object[].class).setParameter("id", id); List<Object[]> resultList = q.getResultList(); Map<String, Long> resultMap = new HashMap<String, Long>(resultList.size()); for (Object[] result : resultList) resultMap.put((String)result[0], (Long)result[1]);