Tôi thực sự đã liên hệ với các nhà phát triển JDBC qua Github và sau một số cuộc thảo luận, có vẻ như giải pháp tốt nhất hiện tại là chuẩn bị tuyên bố như sau:
String query = "SELECT id, data FROM table_name WHERE data->'objects' @> ?::jsonb";
và chuyển toàn bộ tiêu chí tìm kiếm dưới dạng đối tượng JSON được xâu chuỗi cho tham số:
PreparedStatement st = connection.prepareStatement(query);
st.setString(1, "[\"id\":" + "id1" + "]");
st.executeQuery();
đó không phải là một giải pháp hoàn hảo nhưng có vẻ là tốt nhất có thể do thiếu khả năng của máy chủ. Cuối cùng, nó không quá tệ vì (về mặt lý thuyết) không có nguy cơ bị tiêm SQL.
Thêm chi tiết về vấn đề Github được liên kết.