Alternatif kepada Klausa MySQL LIMIT dalam JPQL atau HQL
Dalam Hibernate 3, klausa yang setara dengan klausa MySQL LIMIT dalam HQL tidak disokong secara langsung . Walaupun ia mungkin dalam versi Hibernate yang lebih awal, ia bukan lagi ciri.
Nota Sejarah:
Dalam Hibernate 2, penghurai HQL tidak menguatkuasakan pematuhan dengan ketat kepada sintaks HQL standard. Ini menghasilkan keupayaan untuk memasukkan serpihan yang tidak dikenali, seperti klausa LIMIT, dalam pertanyaan HQL. Walau bagaimanapun, dengan pengenalan penghurai AST HQL dalam Hibernate 3, binaan bukan standard sedemikian tidak lagi diterima.
Penyelesaian:
Pendekatan yang disyorkan untuk mengehadkan pertanyaan keputusan dalam Hibernate 3 dan seterusnya ialah menggunakan kaedah setMaxResults() antara muka Pertanyaan. Kaedah ini membolehkan anda menentukan bilangan maksimum hasil yang akan dikembalikan oleh pertanyaan.
Untuk meniru gelagat klausa MySQL LIMIT, anda boleh menggunakan setMaxResults() bersama-sama dengan kaedah setFirstResult(). Sebagai contoh, untuk mengembalikan 20 hasil pertama daripada pertanyaan, anda akan menggunakan kod berikut:
Query query = session.createQuery("from ATable order by aTableColumn desc"); query.setMaxResults(20); query.setFirstResult(0);
Walaupun setMaxResults() mungkin tidak ringkas seperti klausa LIMIT, ia menyediakan mekanisme yang konsisten dan disokong untuk mengehadkan hasil pertanyaan dalam JPQL dan HQL.
Atas ialah kandungan terperinci Bagaimana untuk Mengganti Klausa LIMIT MySQL dalam JPQL atau HQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!