Recuperar Los datos como objetos personalizados de las consultas Spring Data JPA GROUP BY mejoran la presentación de los datos y simplifican el procesamiento posterior. Esta guía explora cómo lograr esto y muestra soluciones para consultas JPQL y nativas.
Las consultas JPQL dentro de la especificación JPA ofrecen nativas soporte para devolver objetos personalizados.
Defina un clase de bean para representar la estructura de salida deseada:
public class SurveyAnswerStatistics {
private String answer;
private Long cnt;
// Constructor
}
Actualice el método del repositorio para devolver instancias del 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();
}
Si bien las consultas nativas carecen de soporte directo para la nueva palabra clave, las interfaces Spring Data Projection proporcionan una solución alternativa:
Cree una interfaz de proyección con propiedades correspondientes a lo deseado salida:
public interface SurveyAnswerStatistics {
String getAnswer();
int getCnt();
}
Actualice el método del repositorio para devolver las propiedades proyectadas:
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();
}
Emplee la palabra clave SQL AS para asignar campos de resultados a propiedades de proyección sin problemas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3