Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Klausa IN JPQL dengan Cekap dengan Tatasusunan atau Koleksi Mengembangkan Secara Dinamik?
JPQL IN Klausa: Mengembangkan Secara Dinamik dengan Tatasusunan atau Koleksi
Apabila membuat pertanyaan pangkalan data, selalunya perlu untuk mendapatkan semula objek yang sepadan dengan set tertentu daripada nilai. Dalam SQL, ini biasanya dicapai menggunakan klausa IN. Walau bagaimanapun, dalam JPQL, pendekatan standard memerlukan secara eksplisit menyatakan setiap nilai dalam klausa IN.
Had Klausa IN JPQL
Klausa JPQL IN lalai menjangkakan senarai individu parameter, seperti:
SELECT item FROM Item item WHERE item.name IN (:name1, :name2, :name3)
Pendekatan ini boleh menjadi membosankan dan terdedah kepada ralat apabila berurusan dengan sejumlah besar nilai.
Penyelesaian: Memanfaatkan Koleksi
Untuk menangani had ini, JPQL 2.0 memperkenalkan keupayaan untuk lulus koleksi sebagai parameter kepada klausa IN. Ini membolehkan anda mengembangkan set nilai dalam klausa secara dinamik.
Menggunakan Tatasusunan dan Senarai dalam Klausa JPQL DALAM
Dalam Java, anda boleh menggunakan tatasusunan atau senarai untuk mewakili koleksi nilai:
List<String> names = Arrays.asList("foo", "bar"); String jpql = "SELECT item FROM Item item WHERE item.name IN :names"; Query q = em.createQuery(jpql); q.setParameter("names", names);
Dengan menghantar koleksi sebagai parameter bernama "nama," JPQL akan secara automatik membongkar nilainya ke dalam klausa IN.
兼容性考虑
Perhatikan bahawa ciri ini disokong dalam JPA 2.0 dan memerlukan pelaksanaan khusus dalam pembekal ORM yang berbeza:
String jpql = "SELECT item FROM Item item WHERE item.name IN (:names)";
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Klausa IN JPQL dengan Cekap dengan Tatasusunan atau Koleksi Mengembangkan Secara Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!