Rumah > Artikel > pangkalan data > Bagaimana untuk menggunakan MySQL Assign Operator (:=) dalam Hibernate Native Queries?
MySQL Assign Operator dalam Hibernate Native Query
Apabila bekerja dengan Hibernate, anda mungkin menghadapi keperluan untuk menggunakan pernyataan subpilihan dalam pertanyaan asli. Pertanyaan asli membolehkan anda berinteraksi secara langsung dengan pangkalan data asas menggunakan sintaksnya sendiri.
Walau bagaimanapun, percubaan untuk menggunakan pengendali tugasan MySQL (:=) dalam pertanyaan asli dalam Hibernate boleh menyebabkan pengecualian: "Ruang ialah tidak dibenarkan selepas awalan parameter ':' ....". Ini disebabkan oleh isu yang diketahui (HHH-2697) dengan Hibernate.
Penyelesaian
Mujurlah, Hibernate 4.1.3 dan versi yang lebih baru telah menangani isu ini. Untuk menggunakan pengendali penugasan MySQL dalam pertanyaan asli, anda kini boleh melepaskannya dengan garis miring ke belakang ().
Sebagai contoh, pertimbangkan pertanyaan asli berikut:
<code class="sql">SELECT k.`news_master_id` AS id, @row := @row + 1 AS rownum FROM keyword_news_list k JOIN (SELECT @row := 0) r WHERE k.`keyword_news_id` = :kid ORDER BY k.`news_master_id` ASC</code>
Untuk melaksanakan pertanyaan ini dalam Hibernate, gunakan kod berikut:
<code class="java">sessionFactory.getCurrentSession() .createSQLQuery(query) .setParameter("kid", kid) .uniqueResult();</code>
Dengan melarikan diri dari operator serah hak dengan garis miring ke belakang, pertanyaan akan berjaya dilaksanakan.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan MySQL Assign Operator (:=) dalam Hibernate Native Queries?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!