Вашият подготвен израз прехвърля full_address в text (вграден тип текст на Postgres), докато изглежда, че вашата таблица е създадена с citext (нечувствителен към регистър) тип текст (или ви липсва индекс на full_address::text ). Може би опитайте да създадете индекс на full_address::text и вижте дали вашето подготвено изявление ще го вземе.
Друг вариант е да използвате text тип за full_address колона и след това създайте функционален индекс на lower(full_address) -- вкусът на тази опция зависи от вашите изисквания.
Мисля, че част от проблема е, че JDBC не знае за citext въведете, така че освен ако не можете да накарате JDBC да изпрати адреса ви в базата данни като citext тип, той ще бъде интерпретиран от програмата за планиране на заявки като text , точно като вашия setString() метод вероятно прави.
Интересното е, че наскоро се сблъсках с подобен проблем
Разкриване:Работя за EnterpriseDB (EDB)