Perilaku ini cukup mengganggu karena string JSON diterima tanpa masalah saat digunakan sebagai string literal dalam perintah SQL.
Sudah ada masalah untuk ini di repositori Github driver postgres (bahkan jika masalahnya tampaknya adalah pemrosesan sisi server).
Selain menggunakan pemeran (lihat answer of@a_horse_with_no_name) dalam string sql, pembuat masalah menawarkan dua solusi tambahan:
- Gunakan parameter
stringtype=unspecified
di URL/opsi koneksi JDBC.
Ini memberi tahu PostgreSQL bahwa semua parameter teks atau varchar sebenarnya dari tipe yang tidak diketahui, membiarkannya menyimpulkan tipenya dengan lebih bebas.
- Bungkus parameter dalam
org.postgresql.util.PGobject
:
PGobject jsonObject = new PGobject();
jsonObject.setType("json");
jsonObject.setValue(yourJsonString);
pstmt.setObject(11, jsonObject);