Heim > Java > javaLernprogramm > Hauptteil

Wie kann ich die Ergebnisse einer JPA-Abfrage mithilfe von Aggregatfunktionen anpassen?

WBOY
Freigeben: 2023-09-18 16:49:07
nach vorne
908 Leute haben es durchsucht

Wie kann ich die Ergebnisse einer JPA-Abfrage mithilfe von Aggregatfunktionen anpassen?

Wenn wir JPA-Abfragen verwenden, werden die erhaltenen Ergebnisse meistens Objekten/spezifischen Datentypen zugeordnet. Wenn wir jedoch Aggregatfunktionen in Abfragen verwenden, erfordert die Verarbeitung der Ergebnisse manchmal, dass wir die JPA-Abfrage anpassen.

Lassen Sie uns (Abteilung, Mitarbeiter) anhand eines Beispiels verstehen −

Dept.java

@Entity
public class Dept {
   @Id
   private Long id;
   private String name;
   @OneToMany(mappedBy = "dep")
   private List<Employee> emp;
   //Getters
   //Setters
}
Nach dem Login kopieren

Eine Abteilung kann einen oder mehrere Mitarbeiter haben, aber ein Mitarbeiter kann nur einer Abteilung angehören.

employee.java

@Entity
public class Employee {
   @Id
   private Long id;
   private Integer joiningyear;
   @ManyToOne
   private Dept dep;
   
   //Getters
   //Setters
}
Nach dem Login kopieren

Wenn wir nun das Beitrittsdatum und die Anzahl der nach Beitrittsdatum gruppierten Mitarbeiter erhalten möchten,

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {
   // query methods
   @Query("SELECT e.joiningyear, COUNT(e.joiningyear) FROM Employee AS e GROUP BY e.joiningyear")
   List<Object[]> countEmployeesByJoiningYear();
}
Nach dem Login kopieren

Die obige Abfrage funktioniert einwandfrei, aber das Speichern von Werten in der Form List kann zu Fehlern führen. Stattdessen können wir die JPA-Abfrage anpassen, um die Ergebnisse der obigen Abfrage einer Java-Klasse zuzuordnen. Diese Java-Klasse ist nur ein einfaches POJO (Plain Old Java Object) und muss nicht mit @Entity annotiert werden.

Die chinesische Übersetzung von

CountEmployees.java

lautet:

CountEmployees.java

package com.tutorialspoint;
public class CountEmployees {
   private Integer joinyear;
   private Long totalEmp;
   
   public CountEmployees(Integer joinyear, Long totalEmp) {
      this.joinyear = joinyear;
      this.totalEmp = totalEmp;
   }
   //Getters
   //Setters
}
Nach dem Login kopieren

Jetzt können wir unsere JPA-Abfrage wie unten gezeigt anpassen −

@Query("SELECT new com.tutorialspoint.CountEmployees(e.joiningyear, COUNT(e.joiningyear)) " + "FROM Employee AS e GROUP BY e.joiningyear")
List<CountEmployees> countEmployeesByJoining();
Nach dem Login kopieren

Die Ergebnisse der obigen Auswahlabfrage werden der CountEmployees-Klasse zugeordnet. Auf diese Weise können wir JPA-Abfragen anpassen und die Ergebnisse Java-Klassen zuordnen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Ergebnisse einer JPA-Abfrage mithilfe von Aggregatfunktionen anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage