Heim  >  Artikel  >  Java  >  Wie rufe ich benutzerdefinierte Objekte aus gruppierten Spring Data JPA-Abfrageergebnissen ab?

Wie rufe ich benutzerdefinierte Objekte aus gruppierten Spring Data JPA-Abfrageergebnissen ab?

DDD
DDDOriginal
2024-11-01 14:21:02487Durchsuche

How to Retrieve Custom Objects from Spring Data JPA Grouped Query Results?

So rufen Sie benutzerdefinierte Objekte aus gruppierten Spring Data JPA-Abfrageergebnissen ab

Übersicht

Spring Data JPA bietet Mechanismen zum Ausführen von JPQL-Abfragen und zum Abrufen von Ergebnissen benutzerdefinierte Objekte.

JPQL-Abfragen

Schritt 1: Definieren Sie eine Bean-Klasse

Erstellen Sie eine einfache Bean-Klasse, um die gewünschte Objektstruktur darzustellen:

<code class="java">public class SurveyAnswerStatistics {
  private String answer;
  private Long count;

  // Constructor for object instantiation
}</code>

Schritt 2: Verwenden Sie die Bean in der Repository-Methode

Ändern Sie die Repository-Methode, um Instanzen der Bean-Klasse 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

Bei Verwendung nativer Abfragen wird die JPA-spezifische Syntax nicht unterstützt. Verwenden Sie stattdessen:

Schritt 1: Erstellen Sie eine Projektionsschnittstelle

Definieren Sie eine Projektionsschnittstelle, um die Eigenschaften des gewünschten Objekts anzugeben:

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

Schritt 2: Ergebnisfelder in der Abfrage zuordnen

Verwenden Sie das SQL-AS-Schlüsselwort in der Abfrage, um Ergebnisfelder Projektionseigenschaften zuzuordnen:

<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>

Überlegungen

  • Stellen Sie sicher, dass der Bean-Klassenpfad vollständig qualifiziert ist.
  • Verwenden Sie das Schlüsselwort new, wenn Sie Bean-Klassen instanziieren.
  • Die Attributreihenfolge im Konstruktor muss mit der Feldreihenfolge der Abfrage übereinstimmen.
  • Verwenden Sie Projektionsschnittstellen für native Abfragen.
  • Ordnen Sie jedes Ergebnisfeld mithilfe von AS in nativen Abfragen zu.

Das obige ist der detaillierte Inhalt vonWie rufe ich benutzerdefinierte Objekte aus gruppierten Spring Data JPA-Abfrageergebnissen ab?. 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