Rumah >pangkalan data >tutorial mysql >Bolehkah JPQL's IN Clause Mengendalikan Koleksi Secara Terus?
JPQL IN Klausa: Menyahgulung Tatasusunan, Senarai dan Koleksi Lain
Dalam Java Persistence Query Language (JPQL), klausa IN membenarkan anda untuk menentukan senarai nilai khusus untuk perbandingan. Walau bagaimanapun, jika anda perlu membandingkan koleksi nilai dan bukannya menyenaraikannya secara individu, anda mungkin tertanya-tanya sama ada terdapat cara untuk melakukannya dalam JPQL.
Jawapan:
Ya, dalam JPA 2.0 dan lebih baru, anda boleh menentukan Koleksi dalam klausa IN untuk dibuka kepada nilai individunya. Untuk melakukan ini:
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);
Contoh:
Contoh berikut dalam EclipseLink mendapatkan semula semua objek Item yang namanya sepadan sama ada "foo" atau "bar":
String qlString = "select item from Item item where item.name IN :names"; Query q = em.createQuery(qlString, Item.class); Listnames = Arrays.asList("foo", "bar"); q.setParameter("names", names); List - actual = q.getResultList(); assertNotNull(actual); assertEquals(2, actual.size());
Nota untuk Hibernate:
Sebelum Hibernate 4, anda perlu mengelilingi parameter dalam kurungan dalam JPQL pertanyaan:
String qlString = "select item from Item item where item.name IN (:names)";
Walau bagaimanapun, ini adalah sambungan khusus Hibernate dan bukan sebahagian daripada sintaks JPQL standard.
Atas ialah kandungan terperinci Bolehkah JPQL's IN Clause Mengendalikan Koleksi Secara Terus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!