Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menggunakan MySQL Assign Operator (:=) dalam Hibernate Native Queries?

Bagaimana untuk menggunakan MySQL Assign Operator (:=) dalam Hibernate Native Queries?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 16:04:02415semak imbas

How to Use MySQL Assign Operator (:=) in 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!

Kenyataan:
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