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

Parametro dell'istruzione preparata JDBC all'interno di json

In realtà ho contattato gli sviluppatori JDBC su Github e dopo alcune discussioni sembra che attualmente la soluzione migliore sia avere la dichiarazione preparata come segue:

String query = "SELECT id, data FROM table_name WHERE data->'objects' @> ?::jsonb";

e passare l'intero criterio di ricerca come oggetto JSON stringato per il parametro:

PreparedStatement st = connection.prepareStatement(query);
st.setString(1, "[\"id\":" + "id1" + "]");
st.executeQuery();

non è una soluzione perfetta ma sembra la migliore possibile a causa della mancanza di capacità del server. Alla fine non è così male in quanto (teoricamente) non c'è alcun rischio di SQL injection.

Maggiori dettagli sul problema Github collegato.