Właściwie skontaktowałem się z programistami JDBC na Github a po kilku dyskusjach wydaje się, że obecnie najlepszym rozwiązaniem jest posiadanie przygotowanego oświadczenia w następujący sposób:
String query = "SELECT id, data FROM table_name WHERE data->'objects' @> ?::jsonb";
i przekaż całe kryteria wyszukiwania jako skrócony obiekt JSON dla parametru:
PreparedStatement st = connection.prepareStatement(query);
st.setString(1, "[\"id\":" + "id1" + "]");
st.executeQuery();
nie jest to idealne rozwiązanie, ale wydaje się najlepsze z możliwych ze względu na brak możliwości serwera. Na koniec nie jest tak źle, ponieważ (teoretycznie) nie ma ryzyka wstrzyknięcia SQL.
Więcej szczegółów na temat powiązanego problemu z Github.