Recuperação dados como objetos personalizados de consultas Spring Data JPA GROUP BY aprimoram a apresentação dos dados e simplificam o processamento adicional. Este guia explora como fazer isso, apresentando soluções para consultas JPQL e nativas.
Consultas JPQL dentro da especificação JPA oferecem consultas nativas suporte para retornar objetos personalizados.
Defina um classe de bean simples para representar a estrutura de saída desejada:
public class SurveyAnswerStatistics {
private String answer;
private Long cnt;
// Constructor
}
Atualize o método do repositório para retornar instâncias do bean personalizado:
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();
}
Embora as consultas nativas não tenham suporte direto para a nova palavra-chave, as interfaces do Spring Data Projection fornecem uma solução alternativa:
Crie uma interface de projeção com propriedades correspondentes ao desejado saída:
public interface SurveyAnswerStatistics {
String getAnswer();
int getCnt();
}
Atualize o método do repositório para retornar propriedades projetadas:
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();
}
Use a palavra-chave SQL AS para mapear campos de resultados para propriedades de projeção perfeitamente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3