PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come posso inserire un oggetto JSON in Postgres usando Java prepareStatement?

Questo comportamento è piuttosto fastidioso poiché le stringhe JSON vengono accettate senza problemi se utilizzate come stringhe letterali nei comandi SQL.

C'è già un problema per questo nel repository Github del driver postgres (anche se il problema sembra essere l'elaborazione lato server).

Oltre a utilizzare un cast (vedi risposta di@a_horse_with_no_name) nella stringa sql, l'autore del problema offre due soluzioni aggiuntive:

  1. Utilizza un parametro stringtype=unspecified nell'URL/opzioni di connessione JDBC.

Questo dice a PostgreSQL che tutti i parametri text o varchar sono in realtà di tipo sconosciuto, permettendogli di dedurre i loro tipi più liberamente.

  1. Raccogli il parametro in un org.postgresql.util.PGobject :

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