Spring Data JPA fournit des mécanismes pour exécuter des requêtes JPQL et récupérer les résultats comme objets personnalisés.
Étape 1 : Définir une classe de bean
Créez une classe de bean simple pour représenter la structure d'objet souhaitée :
<code class="java">public class SurveyAnswerStatistics { private String answer; private Long count; // Constructor for object instantiation }</code>
Étape 2 : Utiliser le bean dans la méthode du référentiel
Modifier la méthode du référentiel pour renvoyer les instances de la classe du bean :
<code class="java">public interface SurveyRepository extends CrudRepository<Survey, Long> { @Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer") List<SurveyAnswerStatistics> findSurveyCount(); }</code>
Si vous utilisez des requêtes natives, la syntaxe spécifique à JPA n'est pas prise en charge. Utilisez plutôt :
Étape 1 : Créer une interface de projection
Définissez une interface de projection pour spécifier les propriétés de l'objet souhaité :
<code class="java">public interface SurveyAnswerStatistics { String getAnswer(); int getCnt(); }</code>
Étape 2 : Mapper les champs de résultat dans la requête
Utilisez le mot-clé SQL AS dans la requête pour mapper les champs de résultat aux propriétés de projection :
<code class="java">@Query(nativeQuery = true, value = "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer") List<SurveyAnswerStatistics> findSurveyCount(); }</code>
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!