PostgreSQL menawarkan pengendali JSON unik yang termasuk watak tanda soal dalam nama mereka, seperti ? untuk kewujudan kunci dan ?|. Walau bagaimanapun, pemacu PostgreSQL JDBC rasmi menghadapi kesukaran menghuraikan rentetan SQL yang mengandungi pengendali ini, tersilap mentafsirkannya sebagai pembolehubah mengikat JDBC.
Untuk berjaya menggunakan operator ini dalam JDBC, pertimbangkan perkara berikut penyelesaian:
Penyelesaian asas ini menghapuskan penggunaan pernyataan yang disediakan, membenarkan rentetan SQL dilaksanakan sebagai pernyataan statik mengorbankan kelebihan yang disediakan penyataan.
try (Statement s = c.createStatement(); ResultSet rs = s.executeQuery("select '{}'::jsonb ?| array['a', 'b']")) { ... }
SELECT oprname, oprcode || '(' || format_type(oprleft, NULL::integer) || ', ' || format_type(oprright, NULL::integer) || ')' AS function FROM pg_operator WHERE oprname = '?|';
oprname function ---------------------------------------------------------------------------------- ?| point_vert(point, point) ?| lseg_vertical(-, lseg) ?| line_vertical(-, line) ?| jsonb_exists_any(jsonb, text[]) <--- this is the one we're looking for ?| exists_any(hstore, text[])
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Operator JSON(B) PostgreSQL dengan '?' dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!