Przygotowane zestawienie rzutuje full_address
na text
(wbudowany typ tekstu Postgres), podczas gdy wygląda na to, że Twoja tabela jest tworzona za pomocą citext
(bez uwzględniania wielkości liter) typ tekstu (lub brak indeksu na full_address::text
). Może spróbuj utworzyć indeks na full_address::text
i zobacz, czy przygotowane przez Ciebie zestawienie to odbierze.
Inną opcją jest użycie text
wpisz dla full_address
kolumnę, a następnie utwórz indeks funkcjonalny na lower(full_address)
-- smakowitość tej opcji zależy od Twoich wymagań.
Myślę, że częścią problemu jest to, że JDBC nie wie o citext
wpisz tak, chyba że możesz uzyskać JDBC, aby wysłać adres do bazy danych jako citext
typ, zostanie zinterpretowany przez planer zapytań jako text
, tak jak twoja setString()
metoda prawdopodobnie tak.
Co ciekawe, wpadłem ostatnio na podobny problem
Ujawnienie:pracuję dla EnterpriseDB (EDB)