Rumah > Java > javaTutorial > Bagaimana untuk menyesuaikan hasil pertanyaan JPA menggunakan fungsi agregat?

Bagaimana untuk menyesuaikan hasil pertanyaan JPA menggunakan fungsi agregat?

WBOY
Lepaskan: 2023-09-18 16:49:07
ke hadapan
970 orang telah melayarinya

Bagaimana untuk menyesuaikan hasil pertanyaan JPA menggunakan fungsi agregat?

Kebanyakan masa, apabila kami menggunakan pertanyaan JPA, hasil yang diperoleh dipetakan kepada objek/jenis data tertentu. Tetapi apabila kami menggunakan fungsi agregat dalam pertanyaan, memproses keputusan kadangkala memerlukan kami menyesuaikan pertanyaan JPA.

Mari kita fahami (jabatan, pekerja) melalui contoh −

Dept.java

@Entity
public class Dept {
   @Id
   private Long id;
   private String name;
   @OneToMany(mappedBy = "dep")
   private List<Employee> emp;
   //Getters
   //Setters
}
Salin selepas log masuk

Sesebuah jabatan boleh mempunyai seorang atau lebih pekerja, tetapi pekerja hanya boleh tergolong dalam satu jabatan.

Pekerja.java

@Entity
public class Employee {
   @Id
   private Long id;
   private Integer joiningyear;
   @ManyToOne
   private Dept dep;
   
   //Getters
   //Setters
}
Salin selepas log masuk

Sekarang, jika kita ingin mendapatkan tarikh sertai dan bilangan pekerja dikumpulkan mengikut tarikh menyertai,

@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();
}
Salin selepas log masuk

Pertanyaan di atas berfungsi dengan baik, tetapi menyimpan nilai dalam bentuk Senarai Sebaliknya, kita boleh menyesuaikan pertanyaan JPA untuk memetakan hasil pertanyaan di atas ke dalam kelas Java. Kelas Java ini hanyalah POJO ringkas (Objek Java Lama Biasa) dan tidak perlu dianotasi dengan @Entity.

Terjemahan bahasa Cina bagi

CountEmployees.java

ialah:

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
}
Salin selepas log masuk

Kini, kami boleh menyesuaikan pertanyaan JPA kami seperti yang ditunjukkan di bawah −

@Query("SELECT new com.tutorialspoint.CountEmployees(e.joiningyear, COUNT(e.joiningyear)) " + "FROM Employee AS e GROUP BY e.joiningyear")
List<CountEmployees> countEmployeesByJoining();
Salin selepas log masuk

Hasil pertanyaan pilihan di atas akan dipetakan ke kelas CountEmployees. Dengan cara ini kita boleh menyesuaikan pertanyaan JPA dan memetakan hasilnya ke kelas java.

Atas ialah kandungan terperinci Bagaimana untuk menyesuaikan hasil pertanyaan JPA menggunakan fungsi agregat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan