Bagaimana untuk Melarikan Diri Watak Khas dalam Pertanyaan Asli JPA?

Barbara Streisand
Lepaskan: 2024-11-07 15:41:03
asal
472 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan