PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como posso inserir o objeto JSON no Postgres usando o Java preparadoStatement?


Esse comportamento é bastante irritante, pois as strings JSON são aceitas sem problemas quando usadas como strings literais em comandos SQL.

Já existe um problema para isso no repositório Github do driver postgres (mesmo que o problema pareça ser o processamento do lado do servidor).

Além de usar um cast (veja a resposta de@a_horse_with_no_name) na string sql, o autor do problema oferece duas soluções adicionais:
  1. Use um parâmetro stringtype=unspecified na URL/opções de conexão JDBC.

Isso informa ao PostgreSQL que todos os parâmetros text ou varchar são, na verdade, de tipo desconhecido, permitindo que ele indique seus tipos mais livremente.
  1. Enrole o parâmetro em um org.postgresql.util.PGobject :




 PGobject jsonObject = new PGobject();
 jsonObject.setType("json");
 jsonObject.setValue(yourJsonString);
 pstmt.setObject(11, jsonObject);