Подтвердить что ты не робот

Как получить значения SELECT и значение COUNT с помощью JPA GROUP BY?

Если моя сущность получается как Человек, она имеет имя, свойства 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?

4b9b3361

Ответ 1

Когда вы выполняете этот запрос, вместо прямого доступа к списку объектов, как обычно, вы получите список 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();
}