Rumah >pangkalan data >tutorial mysql >Bagaimana untuk melarikan diri dari MySQL Assign Operator (:=) dalam Hibernate Native Queries?

Bagaimana untuk melarikan diri dari MySQL Assign Operator (:=) dalam Hibernate Native Queries?

Susan Sarandon
Susan Sarandonasal
2024-11-02 05:30:29562semak imbas

How to Escape the MySQL Assign Operator (:=) in Hibernate Native Queries?

Meloloskan diri dari Operator MySQL Assign (=) dalam Pertanyaan Asli Hibernate

Apabila bekerja dengan pertanyaan asli Hibernate, ralat mungkin akan berlaku semasa menggunakan pengendali tetapkan MySQL (:=) disebabkan oleh ruang yang mengikuti titik bertindih (:). Isu ini amat jelas dalam kes di mana pernyataan subpilihan diperlukan.

Kod yang disediakan menggambarkan ini:

SELECT sub.rownum FROM (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) AS sub WHERE sub.id = :nid

Melaksanakan pertanyaan ini menggunakan setParameter menghasilkan pengecualian yang menyerlahkan ruang yang salah selepas titik bertindih .

Nasib baik, Hibernate kini menyediakan penyelesaian kepada isu ini. Dalam Hibernate 4.1.3 dan yang lebih baru, anda boleh melarikan diri dari operator tetapkan menggunakan garis miring ke belakang (), seperti yang ditunjukkan di bawah:

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

Dengan melarikan diri dari kolon, Hibernate berjaya mentafsir sintaks, membolehkan anda melaksanakan pertanyaan subpilihan dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk melarikan diri dari 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