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.
JPQL menyediakan sokongan asli untuk mengembalikan objek tersuai menggunakan kata kunci baharu. Begini caranya:
<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>
Pertanyaan asli tidak menyokong kata kunci baharu. Sebaliknya, gunakan antara muka unjuran Data Spring:
<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:
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!