Bản sao kê đã chuẩn bị của bạn truyền full_address
thành text
(Kiểu văn bản tích hợp của Postgres), trong khi có vẻ như bảng của bạn được tạo bằng citext
(phân biệt chữ hoa chữ thường) loại văn bản (hoặc bạn thiếu chỉ mục trên full_address::text
). Có thể thử tạo chỉ mục trên full_address::text
và xem liệu tuyên bố đã chuẩn bị của bạn có phù hợp với nó hay không.
Một tùy chọn khác là sử dụng text
nhập cho full_address
và sau đó tạo chỉ mục chức năng trên lower(full_address)
- độ ngon của tùy chọn đó phụ thuộc vào yêu cầu của bạn.
Tôi nghĩ rằng một phần của vấn đề là JDBC không biết về citext
nhập như vậy trừ khi bạn có thể yêu cầu JDBC gửi địa chỉ của bạn đến cơ sở dữ liệu dưới dạng citext
nhập, nó sẽ được công cụ lập kế hoạch truy vấn hiểu là text
, giống như setString()
của bạn phương pháp có thể có.
Thật thú vị, gần đây tôi gặp phải sự cố tương tự
Tiết lộ:Tôi làm việc cho EnterpriseDB (EDB)