如何使用JPA GROUP BY获取SELECT值和COUNT值?

时间:2011-08-05 12:07:37

标签: jpa

如果我的实体是以man身份获取,它有name,id属性,JPA如何获取此查询的检索结果,

entityManager.createQuery("SELECT m.name AS name, COUNT(m) AS total FROM Man AS m GROUP BY m.name ORDER BY m.name ASC");

有没有办法将org.springframework.jdbc.core.RowMapper与JPA一起使用?

1 个答案:

答案 0 :(得分:44)

当您执行此查询时,您将检索Object[]的列表,而不是直接获取通常的对象列表。

对于您检索的每个数组,第一个元素将是行的名称,第二个元素将是计数。

我认为你不能使用RowMapper和JPA。 RowMapper来自Spring,它与JPA的框架不同。也许一些JPA实现允许这样做,但我不认为这样做是明智的。

编辑 - 代码示例:

List<Object[]> results = entityManager
        .createQuery("SELECT m.name AS name, COUNT(m) AS total FROM Man AS m GROUP BY m.name ORDER BY m.name ASC");
        .getResultList();
for (Object[] result : results) {
    String name = (String) result[0];
    int count = ((Number) result[1]).intValue();
}