emp;//Getters//Setters} eine Abteilung"/> emp;//Getters//Setters} eine Abteilung">

Heim >Java >javaLernprogramm >Wie kann ich die Ergebnisse einer JPA-Abfrage mithilfe von Aggregatfunktionen anpassen?

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

WBOY
WBOYnach vorne
2023-09-18 16:49:07952Durchsuche

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
}

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
}

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();
}

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
}

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();

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen