sql >> Base de Datos >  >> RDS >> PostgreSQL

Parámetro de declaración preparada de JDBC dentro de json

De hecho, contacté a los desarrolladores de JDBC en Github y después de algunas discusiones, parece que actualmente la mejor solución es tener la declaración preparada de la siguiente manera:

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

y pase todos los criterios de búsqueda como objeto JSON en cadena para el parámetro:

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

esa no es una solución perfecta, pero parece la mejor posible debido a la falta de capacidades del servidor. Al final no es tan malo ya que (teóricamente) no hay riesgo de inyección SQL.

Más detalles sobre el problema de Github vinculado.