„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 22.12.2024
Durchsuche:886

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

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

Einführung


Abrufen Daten als benutzerdefinierte Objekte aus Spring Data JPA GROUP BY-Abfragen verbessern die Datenpräsentation und vereinfachen 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-Spezifikation bieten 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ünschten Ausgabestruktur:

public class SurveyAnswerStatistics {
  private String answer;
  private Long cnt;

  // Constructor
}

Schritt 2: Bean-Instanzen zurückgeben


Aktualisieren Sie die Repository-Methode, um Instanzen der benutzerdefinierten Bean zurückzugeben:

public interface SurveyRepository extends CrudRepository {
    @Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
    List findSurveyCount();
}

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 den gewünschten Eigenschaften Ausgabe:

public interface SurveyAnswerStatistics {
  String getAnswer();
  int getCnt();
}

Schritt 2: Projizierte Eigenschaften zurückgeben


Aktualisieren Sie die Repository-Methode, um projizierte Eigenschaften zurückzugeben:

public interface SurveyRepository extends CrudRepository {
    @Query(nativeQuery = true, value =
            "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
    List findSurveyCount();
}

Verwenden Sie das SQL-AS-Schlüsselwort, um Ergebnisfelder nahtlos Projektionseigenschaften zuzuordnen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3