Ich habe tatsächlich JDBC-Entwickler über Github kontaktiert und nach einigen Diskussionen scheint es, dass derzeit die beste Lösung darin besteht, die vorbereitete Anweisung wie folgt zu haben:
String query = "SELECT id, data FROM table_name WHERE data->'objects' @> ?::jsonb";
und übergeben Sie die gesamten Suchkriterien als stringifiziertes JSON-Objekt für den Parameter:
PreparedStatement st = connection.prepareStatement(query);
st.setString(1, "[\"id\":" + "id1" + "]");
st.executeQuery();
Das ist keine perfekte Lösung, scheint aber aufgrund fehlender Serverfunktionen die bestmögliche zu sein. Am Ende ist es nicht so schlimm, da (theoretisch) kein Risiko einer SQL-Injektion besteht.
Weitere Details zum verlinkten Github-Problem.