Извлечение данные в виде пользовательских объектов из запросов Spring Data JPA GROUP BY улучшают представление данных и упрощают дальнейшую обработку. В этом руководстве рассказывается, как этого добиться, и демонстрируются решения как для JPQL, так и для собственных запросов.
Запросы JPQL в спецификации JPA предлагают нативные запросы поддержка возврата пользовательских объектов.
Определите простой класс компонента для представления желаемой структуры вывода:
public class SurveyAnswerStatistics {
private String answer;
private Long cnt;
// Constructor
}
Обновите метод репозитория, чтобы он возвращал экземпляры пользовательского компонента:
public interface SurveyRepository extends CrudRepository {
@Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
List findSurveyCount();
}
Хотя нативные запросы не имеют прямой поддержки нового ключевого слова, интерфейсы Spring Data Projection предоставляют альтернативное решение:
Создайте интерфейс проекции со свойствами, соответствующими желаемому вывод:
public interface SurveyAnswerStatistics {
String getAnswer();
int getCnt();
}
Обновите метод репозитория, чтобы он возвращал прогнозируемые свойства:
public interface SurveyRepository extends CrudRepository {
@Query(nativeQuery = true, value =
"SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
List findSurveyCount();
}
Используйте ключевое слово SQL AS для беспрепятственного сопоставления полей результатов со свойствами проекции.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3