Bei der Durchführung komplexer Abfragen mit Spring Data JPA ist es notwendig, benutzerdefinierte Objekte zurückzugeben, anstatt die Standardentitäten. Ein solches Szenario besteht darin, die Ergebnisse nach einem bestimmten Feld zu gruppieren und die Anzahl für jede Gruppe abzurufen. In diesem Artikel werden zwei Methoden untersucht, um dies zu erreichen: eine für JPQL-Abfragen und eine für native Abfragen.
JPQL bietet native Unterstützung für die Rückgabe benutzerdefinierter Objekte mit dem neuen Schlüsselwort. So geht's:
<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(); } public class SurveyAnswerStatistics { private String answer; private Long cnt; // getters and setters here }</code>
Native Abfragen unterstützen das neue Schlüsselwort nicht. Verwenden Sie stattdessen Spring Data-Projektionsschnittstellen:
<code class="java">public interface SurveyAnswerStatistics { String getAnswer(); int getCnt(); } public interface SurveyRepository extends CrudRepository<Survey, Long> { @Query(nativeQuery = true, value = "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer") List<SurveyAnswerStatistics> findSurveyCount(); }</code>
Wichtige Hinweise:
Das obige ist der detaillierte Inhalt vonWie gebe ich ein benutzerdefiniertes Objekt aus einer Spring Data JPA GROUP BY-Abfrage zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!