JPQL-Abfragen innerhalb der JPA Die Spezifikation bietet native Unterstützung für die Rückgabe benutzerdefinierter Objekte.
Definieren Sie eine einfache Bean-Klasse zur Darstellung der gewünschte Ausgabestruktur:
<code class="java">public class SurveyAnswerStatistics { private String answer; private Long cnt; // Constructor }</code>
Aktualisieren Sie die Repository-Methode, um Instanzen der benutzerdefinierten Bean zurückzugeben :
<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>
Während native Abfragen keine direkte Unterstützung für das neue Schlüsselwort bieten, bieten Spring Data Projection-Schnittstellen eine Alternative Lösung:
Erstellen Sie eine Projektionsschnittstelle mit Eigenschaften, die der gewünschten Ausgabe entsprechen: p>
<code class="java">public interface SurveyAnswerStatistics { String getAnswer(); int getCnt(); }</code>
Aktualisieren Sie die Repository-Methode, um projizierte Eigenschaften zurückzugeben:
<code class="java">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>
Verwenden Sie das SQL-AS-Schlüsselwort, um Ergebnisfelder nahtlos Projektionseigenschaften zuzuordnen.
Das obige ist der detaillierte Inhalt vonWie gebe ich benutzerdefinierte Objekte aus Spring Data JPA GROUP BY-Abfragen zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!