Saya sebenarnya menghubungi pengembang JDBC di Github dan setelah beberapa diskusi tampaknya solusi terbaik saat ini adalah menyiapkan pernyataan sebagai berikut:
String query = "SELECT id, data FROM table_name WHERE data->'objects' @> ?::jsonb";
dan berikan seluruh kriteria pencarian sebagai objek JSON yang dirangkai untuk parameter:
PreparedStatement st = connection.prepareStatement(query);
st.setString(1, "[\"id\":" + "id1" + "]");
st.executeQuery();
itu bukan solusi sempurna tetapi tampaknya yang terbaik karena kurangnya kemampuan server. Pada akhirnya tidak terlalu buruk karena (secara teoritis) tidak ada risiko injeksi SQL.
Detail lebih lanjut tentang masalah Github tertaut.