PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

JDBC Paramètre d'instruction préparée à l'intérieur de json

En fait, j'ai contacté les développeurs JDBC sur Github et après quelques discussions, il semble qu'actuellement la meilleure solution soit d'avoir la déclaration préparée comme suit :

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

et transmettez l'ensemble des critères de recherche en tant qu'objet JSON stringifié pour le paramètre :

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

ce n'est pas une solution parfaite mais semble la meilleure possible en raison du manque de capacités du serveur. Au final ce n'est pas si mal car il n'y a (théoriquement) aucun risque d'injection SQL.

Plus de détails sur le problème lié à Github.