"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment renvoyer des objets personnalisés à partir des requêtes Spring Data JPA GROUP BY ?

Comment renvoyer des objets personnalisés à partir des requêtes Spring Data JPA GROUP BY ?

Publié le 2024-12-22
Parcourir:790

How to Return Custom Objects from Spring Data JPA GROUP BY Queries?

Renvoi d'objet personnalisé dans les requêtes JPA GROUP BY de données Spring

Introduction


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.

Requêtes JPQL


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.

Étape 1 : Créer un bean personnalisé


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
}

Étape 2 : Renvoyer les instances du bean


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();
}

Requêtes natives


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 :

Étape 1 : Définir une interface de projection


Créer une interface de projection avec des propriétés correspondant à l'interface souhaitée sortie :

public interface SurveyAnswerStatistics {
  String getAnswer();
  int getCnt();
}

Étape 2 : Renvoyer les propriétés projetées


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.

Dernier tutoriel Plus>

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