Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Klausa IN JPQL dengan Koleksi dengan Berkesan?

Bagaimanakah Saya Boleh Menggunakan Klausa IN JPQL dengan Koleksi dengan Berkesan?

Patricia Arquette
Lepaskan: 2024-12-28 16:11:32
asal
699 orang telah melayarinya

How Can I Use JPQL's IN Clause with Collections Effectively?

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();
Salin selepas log masuk

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";
Salin selepas log masuk

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)";
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan