Maison  >  Article  >  Java  >  Comment renvoyer des objets personnalisés dans les requêtes Spring Data JPA GROUP BY ?

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-01 14:30:02492parcourir

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

Renvoi d'objet personnalisé dans les requêtes Spring Data JPA GROUP BY

Spring Data JPA offre un moyen pratique d'effectuer des opérations de base de données à l'aide de JPQL (Java Persistence Langage de requête). Lorsque vous utilisez une requête JPQL personnalisée avec une clause GROUP BY, vous souhaiterez peut-être renvoyer des objets personnalisés au lieu des tableaux de résultats SQL intégrés.

Solution JPQL

  1. Définir une classe de bean simple :
<code class="java">public class SurveyAnswerStatistics {
    private String answer;
    private Long count;
    ... // getters and setters
}</code>
  1. Renvoyer les instances de bean à partir de la méthode du référentiel :
<code class="java">@Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
public List<SurveyAnswerStatistics> findSurveyCount();</code>

Solution de requête native

Pour les requêtes natives, les interfaces Spring Data Projection sont utilisées à la place des classes de bean :

  1. Définir une interface de projection :
<code class="java">public interface SurveyAnswerStatistics {
    String getAnswer();
    int getCnt();
    ... // additional getters
}</code>
  1. Renvoie les propriétés projetées à partir de la requête :
<code class="java">@Query(nativeQuery = true, value = "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
public List<SurveyAnswerStatistics> findSurveyCount();</code>

Remarques importantes

  • Utilisez un chemin d'accès complet vers la classe du bean.
  • Appelez le constructeur du bean à l'aide du nouveau mot-clé.
  • Transmettez les attributs dans le même ordre que les paramètres du constructeur du bean.
  • Assurez-vous que la requête est une requête JPA valide.
  • Utilisez le mot-clé SQL AS pour un mappage sans ambiguïté lors de l'utilisation de requêtes natives.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn