Heim  >  Artikel  >  Java  >  Wie gebe ich benutzerdefinierte Objekte aus Spring Data JPA GROUP BY-Abfragen zurück?

Wie gebe ich benutzerdefinierte Objekte aus Spring Data JPA GROUP BY-Abfragen zurück?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 06:16:02624Durchsuche

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

Benutzerdefinierte Objektrückgabe in Spring Data JPA GROUP BY-Abfragen

Einführung


< p>Das Abrufen von Daten als benutzerdefinierte Objekte aus Spring Data JPA GROUP BY-Abfragen verbessert die Datenpräsentation und vereinfacht die weitere Verarbeitung. Dieser Leitfaden untersucht, wie dies erreicht werden kann, und stellt Lösungen sowohl für JPQL- als auch für native Abfragen vor.

JPQL-Abfragen


JPQL-Abfragen innerhalb der JPA Die Spezifikation bietet native Unterstützung für die Rückgabe benutzerdefinierter Objekte.

Schritt 1: Erstellen Sie eine benutzerdefinierte Bean


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>

Schritt 2: Bean-Instanzen zurückgeben


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>

Native Abfragen


Während native Abfragen keine direkte Unterstützung für das neue Schlüsselwort bieten, bieten Spring Data Projection-Schnittstellen eine Alternative Lösung:

Schritt 1: Definieren Sie eine Projektionsschnittstelle


Erstellen Sie eine Projektionsschnittstelle mit Eigenschaften, die der gewünschten Ausgabe entsprechen:

<code class="java">public interface SurveyAnswerStatistics {
  String getAnswer();
  int getCnt();
}</code>

Schritt 2: Projizierte Eigenschaften zurückgeben


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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn