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.