Toto chování je docela nepříjemné, protože řetězce JSON jsou při použití jako doslovné řetězce v příkazech SQL přijímány bez problémů.
V úložišti Github ovladače postgres s tím již existuje problém (i když se zdá, že problém spočívá ve zpracování na straně serveru).
Kromě použití přetypování (viz odpověď of@a_horse_with_no_name) v řetězci SQL nabízí autor problému dvě další řešení:
- Použijte parametr
stringtype=unspecified
v URL/možnostech připojení JDBC.
To PostgreSQL říká, že všechny parametry textu nebo varchar jsou ve skutečnosti neznámého typu, což mu umožňuje volněji odvodit jejich typy.
- Zabalte parametr do
org.postgresql.util.PGobject
:
PGobject jsonObject = new PGobject();
jsonObject.setType("json");
jsonObject.setValue(yourJsonString);
pstmt.setObject(11, jsonObject);