Rumah >Java >javaTutorial >Bagaimana untuk Menukar Hasil Pertanyaan Asli kepada Koleksi POJO di JPA?
Menukar Hasil Pertanyaan Asli kepada Koleksi POJO dalam JPA
Menggunakan JPA, adalah mungkin untuk melaksanakan pertanyaan SQL asli dan mendapatkan semula hasilnya. Walau bagaimanapun, secara lalai, keputusan ini dikembalikan sebagai tatasusunan objek. Jika anda ingin menukarnya kepada koleksi Objek Java Lama Biasa (POJO) dengan medan tertentu, terdapat beberapa pendekatan yang tersedia.
Menggunakan Entiti Dipeta (JPA 2.0)
Dalam JPA 2.0, pertanyaan asli boleh dipetakan kepada entiti JPA. Ini bermakna kelas POJO yang digunakan untuk mewakili hasil mestilah entiti yang dipetakan, bermakna ia telah dianotasi dengan anotasi JPA yang sesuai. Atribut resultClass bagi anotasi NamedNativeQuery boleh digunakan untuk menentukan kelas ini.
Pemetaan Manual
Sebelum JPA 2.1, pendekatan pemetaan manual telah digunakan. Ini melibatkan penulisan kod untuk memetakan tatasusunan tuple yang dikembalikan oleh pertanyaan asli kepada kelas POJO. Pemetaan ini boleh dicapai menggunakan refleksi.
Menggunakan @SqlResultSetMapping (JPA 2.1)
Dengan pengenalan JPA 2.1, anotasi @SqlResultSetMapping bagi pemetaan pertanyaan asli membenarkan pemetaan pertanyaan asli keputusan ke kelas POJO. Pendekatan ini tidak memerlukan POJO untuk menjadi entiti JPA.
Menggunakan Pemetaan XML
Dalam kes di mana pengisytiharan pertanyaan yang dinamakan dalam entiti adalah tidak diingini, pendekatan pemetaan XML alternatif boleh digunakan. Elemen sql-result-set-mapping boleh ditakrifkan dalam fail META-INF/orm.xml untuk memetakan hasil pertanyaan asli kepada kelas POJO tertentu.
Kesimpulan
Bergantung pada versi JPA anda dan keperluan khusus projek anda, terdapat beberapa kaedah yang tersedia untuk menukar hasil pertanyaan asli kepada koleksi POJO. Pilihan pendekatan bergantung pada faktor seperti keserasian JPA, sifat kelas POJO dan tahap konfigurasi yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Hasil Pertanyaan Asli kepada Koleksi POJO di JPA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!