Pernyataan Masalah
Menjalankan pertanyaan JPA asli dengan MySQL pembolehubah pengguna yang mengandungi ':' menimbulkan pengecualian kerana Sintaks yang tidak sah: tidak dibenarkan mengikuti ':' dengan ruang.
Penyelesaian
Untuk menangani isu ini, anda perlu melarikan diri daripada aksara ':'. Ini boleh dicapai dengan mendahuluinya dengan aksara sengkang ke belakang ''.
Berikut ialah pertanyaan yang diperbetulkan:
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
Pelaksanaan dalam JPA
Query q = getEntityManager().createNativeQuery(query, SomeClass.class); return q.getResultList();
Nota:
Penyelesaian yang disediakan menganggap pangkalan data MySQL. Jika menggunakan pangkalan data lain, sintaks untuk melarikan diri aksara khas mungkin berbeza-beza. Oleh itu, adalah penting untuk merujuk kepada dokumentasi pangkalan data khusus untuk kaedah melarikan diri yang disyorkan.Atas ialah kandungan terperinci Bagaimana untuk Melarikan Watak Kolon ':' dalam Pertanyaan JPA untuk MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!