Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Melarikan Diri Watak Khas dalam Pertanyaan Asli JPA?

Bagaimana untuk Melarikan Diri Watak Khas dalam Pertanyaan Asli JPA?

Barbara Streisand
Barbara Streisandasal
2024-11-07 15:41:03413semak imbas

How to Escape Special Characters in JPA Native Queries?

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!

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