Melepaskan Diri daripada Aksara Khas dalam Pertanyaan Asli JPA
Apabila membina pertanyaan SQL asli dalam Java Persistence API (JPA), aksara khas boleh menyebabkan isu penghuraian . Salah satu aksara tersebut ialah titik bertindih (':'), yang biasa digunakan dalam pembolehubah pengguna MySQL.
Cabaran: Melarikan Diri Kolon dalam Pembolehubah Pengguna MySQL
Untuk contoh, pertimbangkan pertanyaan berikut:
SELECT foo, bar, baz, @rownum:= if (@id = foo, @rownum+1, 1) as rownum, @id := foo as rep_id FROM foo_table ORDER BY foo, bar desc
Untuk melaksanakan pertanyaan ini menggunakan kaedah createNativeQuery JPA, kami akan menghadapi pengecualian kerana ruang yang mengikuti titik bertindih dalam tugasan @rownum.
Penyelesaian: Escape the Colon using Backslashes
Untuk melarikan diri dari colon character, kita perlu awalan dengan backslash (). Dalam contoh di atas, kami akan mengubah suai pertanyaan seperti berikut:
SELECT foo, bar, baz, @\rownum:= if (@id = foo, @\rownum+1, 1) as rownum, @\id := foo as rep_id FROM foo_table ORDER BY foo, bar desc
Dengan melepaskan titik bertindih, JPA akan menghuraikan pertanyaan dengan betul dan membenarkan pelaksanaannya. Ambil perhatian bahawa teknik melarikan diri ini digunakan bukan sahaja pada titik bertindih dalam pembolehubah pengguna MySQL tetapi pada mana-mana aksara khas yang mungkin mengganggu penghuraian pertanyaan JPA.
Atas ialah kandungan terperinci Bagaimana untuk Melarikan Diri Watak Khas dalam Pertanyaan Asli JPA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!