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)