Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengembalikan Objek Tersuai daripada Spring Data JPA GROUP BY Query?

Bagaimana untuk Mengembalikan Objek Tersuai daripada Spring Data JPA GROUP BY Query?

Susan Sarandon
Susan Sarandonasal
2024-11-01 08:51:30556semak imbas

How to Return a Custom Object from a Spring Data JPA GROUP BY Query?

Cara Mengembalikan Objek Tersuai daripada Data Spring JPA KUMPULAN OLEH Pertanyaan

Apabila melakukan pertanyaan kompleks menggunakan Spring Data JPA, ia menjadi perlu untuk mengembalikan objek tersuai dan bukannya entiti lalai. Satu senario sedemikian melibatkan pengumpulan hasil mengikut medan tertentu dan mendapatkan semula kiraan untuk setiap kumpulan. Artikel ini akan meneroka dua kaedah untuk mencapai ini: satu untuk pertanyaan JPQL dan satu untuk pertanyaan asli.

Penyelesaian untuk Pertanyaan JPQL

JPQL menyediakan sokongan asli untuk mengembalikan objek tersuai menggunakan kata kunci baharu. Begini caranya:

  1. Tentukan kelas kacang mudah untuk mewakili struktur data yang diingini.
  2. Kembalikan tika kelas kacang ini daripada kaedah repositori.
<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();
}

public class SurveyAnswerStatistics {
    private String answer;
    private Long cnt;
    // getters and setters here
}</code>

Penyelesaian untuk Pertanyaan Asli

Pertanyaan asli tidak menyokong kata kunci baharu. Sebaliknya, gunakan antara muka unjuran Data Spring:

  1. Tentukan antara muka unjuran dengan sifat yang diingini.
  2. Kembalikan sifat unjuran daripada pertanyaan.
<code class="java">public interface SurveyAnswerStatistics {
    String getAnswer();
    int getCnt();
}

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

Nota Penting:

  • Pastikan laluan yang layak sepenuhnya dan penggunaan kata kunci baharu untuk pertanyaan JPQL.
  • Gunakan kata kunci AS SQL untuk memetakan medan hasil dengan antara muka unjuran dalam pertanyaan asli.

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Objek Tersuai daripada Spring Data JPA GROUP BY Query?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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