Вашият подготвен израз прехвърля 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)