Votre instruction préparée transfère full_address
en text
(type de texte intégré à Postgres), alors qu'il semble que votre table soit créée avec un citext
(insensible à la casse) type de texte (ou, il vous manque un index sur full_address::text
). Essayez peut-être de créer un index sur full_address::text
et voyez si votre relevé préparé le reprendra.
Une autre option consiste à utiliser un text
tapez pour l'full_address
colonne, puis créez un index fonctionnel sur lower(full_address)
-- l'appétence de cette option dépend de vos besoins.
Je pense qu'une partie du problème est que JDBC ne connaît pas le citext
tapez so sauf si vous pouvez demander à JDBC d'envoyer votre adresse à la base de données en tant que citext
type, il va être interprété par le planificateur de requêtes comme text
, tout comme votre setString()
méthode le fait probablement.
Fait intéressant, j'ai j'ai récemment rencontré un problème similaire
Divulgation :je travaille pour EnterpriseDB (EDB)