Това поведение е доста досадно, тъй като JSON низовете се приемат без проблеми, когато се използват като буквални низове в SQL команди.
Вече има проблем за това в хранилището на Github на драйвера на postgres (дори ако проблемът изглежда е в обработката от страна на сървъра).
Освен използването на cast (вижте отговора на@a_horse_with_no_name) в sql низа, авторът на проблема предлага две допълнителни решения:
- Използвайте параметър
stringtype=unspecified
в URL адреса/опции за JDBC връзка.
Това казва на PostgreSQL, че всички текстови или varchar параметри всъщност са от неизвестен тип, което му позволява да изведе типовете им по-свободно.
- Увийте параметъра в
org.postgresql.util.PGobject
:
PGobject jsonObject = new PGobject();
jsonObject.setType("json");
jsonObject.setValue(yourJsonString);
pstmt.setObject(11, jsonObject);