プリペアドステートメントは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) で働いています