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

Parâmetro de instrução JDBC preparado dentro do json


Na verdade, entrei em contato com os desenvolvedores do JDBC no Github e após algumas discussões parece que atualmente a melhor solução é ter a declaração preparada da seguinte forma:
String query = "SELECT id, data FROM table_name WHERE data->'objects' @> ?::jsonb";

e passe todos os critérios de pesquisa como objeto JSON stringificado para o parâmetro:
PreparedStatement st = connection.prepareStatement(query);
st.setString(1, "[\"id\":" + "id1" + "]");
st.executeQuery();

essa não é uma solução perfeita, mas parece a melhor possível devido à falta de recursos do servidor. No final, não é tão ruim quanto (teoricamente) não há risco de injeção de SQL.

Mais detalhes sobre o problema vinculado do Github.