JPQL IN Klausa untuk Koleksi
Apabila mendapatkan semula data berdasarkan set nilai menggunakan klausa IN dalam SQL, adalah mudah untuk menghantar tatasusunan atau koleksi sebagai nilai yang akan disemak. JPQL juga menyokong klausa IN, tetapi ia pada mulanya memerlukan setiap parameter ditentukan secara individu (cth., "dalam (:in1, :in2, :in3)").
Penyelesaian untuk JPA 2.0 dan Kemudian
Dalam JPA 2.0 dan lebih baru, adalah mungkin untuk menghantar Koleksi sebagai parameter kepada IN klausa. Berikut ialah contoh:
String qlString = "select item from Item item where item.name IN :names"; Query q = em.createQuery(qlString, Item.class); List<String> names = Arrays.asList("foo", "bar"); q.setParameter("names", names); List<Item> actual = q.getResultList();
Mengendalikan Koleksi dalam Hibernate 3.5.1 dan Terdahulu
Untuk Hibernate 3.5.1 dan lebih awal, terdapat sedikit kelainan apabila menggunakan Koleksi parameter dalam klausa IN. Pertanyaan JPQL berikut adalah sah:
String qlString = "select item from Item item where item.name IN :names";
Walau bagaimanapun, Hibernate tidak mengendalikan sintaks ini dengan betul. Untuk menyelesaikan isu ini, kelilingi parameter dengan kurungan:
String qlString = "select item from Item item where item.name IN (:names)";
Ketidakkonsistenan ini dijejaki sebagai HHH-5126.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Klausa IN JPQL dengan Koleksi dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!