Jeg nåede faktisk ud til JDBC-udviklere på Github og efter nogle diskussioner ser det ud til, at den bedste løsning i øjeblikket er at have den udarbejdede erklæring som følger:
String query = "SELECT id, data FROM table_name WHERE data->'objects' @> ?::jsonb";
og send hele søgekriteriet som strengt JSON-objekt for parameteren:
PreparedStatement st = connection.prepareStatement(query);
st.setString(1, "[\"id\":" + "id1" + "]");
st.executeQuery();
det er ikke en perfekt løsning, men virker den bedst mulige på grund af manglende serverkapacitet. I sidste ende er det ikke så slemt, da der (teoretisk) ikke er nogen risiko for SQL-injektion.
Flere detaljer om det tilknyttede Github-problem.