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

Cha*_*nna 20 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");
Run Code Online (Sandbox Code Playgroud)

有没有办法使用 org.springframework.jdbc.core.RowMapperJPA?

Viv*_*sse 48

当您执行此查询时,您将检索一个列表,而不是像往常一样直接获取对象列表Object[].

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

我不认为你可以使用RowMapperJPA.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();
}
Run Code Online (Sandbox Code Playgroud)

  • 它不是SQL查询.这是一个JPQL查询. (4认同)