Я застрял в поиске способа выполнения группы BY и Count * с другими столбцами, используя JPA 2 Hibernate EntityManager + CriteriaBuilder apis. Каков наилучший способ сделать это.JPA 2 Hibernate Group BY и Count * с другими столбцами
My SQL запрос будет так же просто, как
select type, count(*) from test group by type
У меня есть тест Entity создан с точным отображением.
Но, наконец, мне нужен результат с дополнительным полем для подсчета. Я видел пример использования сессий спящего режима и использования прогнозов для них. Но поскольку я использую JPA2 CriteriaBuilder, я не смог его использовать. count with other fields in group by with hibernate
Уверен, что это будет простой и элегантный способ сделать это. Дайте мне знать, если кто-нибудь это знает.
Edit 1
В настоящее время я могу сделать, чтобы продлить без использования критериев строитель
List<Object[]> results = em
.createQuery("SELECT m.type AS name, COUNT(m) AS total FROM Test AS m GROUP BY m.type ORDER BY m.type ASC").getResultList();
for (Object[] result : results) {
String name = String.valueOf(result[0]);
int count = ((Number) result[1]).intValue();
logger.info(name + " " + count);
}
Но мне нужно сделать то же самое, используя CriteriaBuilder и я, возможно, потребуется динамически вводить где предложения основаны на моих аргументах фильтра.
Первая. Критерии HIbernate и API критериев JPA - это разные вещи: какой из них вы хотите использовать? Во-вторых. Взгляните на достойный учебник по выбранной вами структуре и вернитесь к конкретному вопросу. Мы не собираемся кодировать вас. – perissf
Я использую JPA CriteriaBuilder – Ysak
Итак, почему вы связали ответ, который использует критерии Hibernate? – perissf