PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Vorbereiteter JDBC-Anweisungsparameter in json

Ich habe tatsächlich JDBC-Entwickler über Github kontaktiert und nach einigen Diskussionen scheint es, dass derzeit die beste Lösung darin besteht, die vorbereitete Anweisung wie folgt zu haben:

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

und übergeben Sie die gesamten Suchkriterien als stringifiziertes JSON-Objekt für den Parameter:

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

Das ist keine perfekte Lösung, scheint aber aufgrund fehlender Serverfunktionen die bestmögliche zu sein. Am Ende ist es nicht so schlimm, da (theoretisch) kein Risiko einer SQL-Injektion besteht.

Weitere Details zum verlinkten Github-Problem.