Récupération les données en tant qu'objets personnalisés à partir des requêtes Spring Data JPA GROUP BY améliorent la présentation des données et simplifient le traitement ultérieur. Ce guide explique comment y parvenir, en présentant des solutions pour les requêtes JPQL et natives.
Les requêtes JPQL au sein de la spécification JPA offrent des requêtes natives. prise en charge du renvoi d'objets personnalisés.
Définir un simple classe de bean pour représenter la structure de sortie souhaitée :
public class SurveyAnswerStatistics {
private String answer;
private Long cnt;
// Constructor
}
Mettre à jour la méthode du référentiel pour renvoyer les instances du bean personnalisé :
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();
}
Bien que les requêtes natives ne prennent pas en charge directement le nouveau mot-clé, les interfaces Spring Data Projection offrent une solution alternative :
Créer une interface de projection avec des propriétés correspondant à l'interface souhaitée sortie :
public interface SurveyAnswerStatistics {
String getAnswer();
int getCnt();
}
Mettre à jour la méthode du référentiel pour renvoyer les propriétés projetées :
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();
}
Utilisez le mot-clé SQL AS pour mapper les champs de résultats aux propriétés de projection de manière transparente.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3