jpa postgres - разница результатов запроса с похожими на текстовые поля - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь сделать запрос для поиска элементов, структурированных следующим образом:

IssueCategory - * Issue (один ко многим)

, используя следующий JPQL

select count(z) from IssueCategory z join z.issues x
where
lower(cast(function('lo_get', cast(x.diagnosis as integer)) as text)) like lower(concat('TEXT TO SEARCH', '%'))

, где диагноз - это строковое поле Issue с аннотацией @Lob, отображаемое как текстовое поле в postgres:

CREATE TABLE issues (
...
diagnosis text,
...
)

этот запрос создает следующий запрос

select count(issuecateg0_.id) as col_0_0_
from issue_categories issuecateg0_
inner join issues issues1_ on issuecateg0_.id=issues1_.category_id
where lower(cast(lo_get(cast(issues1_.diagnosis as int4)) as text)) like lower(('TEXT TO SEARCH'||'%'))

Очевидно, что в источнике в качестве параметра запроса был передан «ТЕКСТ ДЛЯ ПОИСКА».

Проблема заключается в том, что при выполнении запроса JPQL возвращается 0, но если я выполняюсгенерированный запрос непосредственно в postgres, я получаю 1.

Кто-нибудь знает поведение, подобное этому?

1 Ответ

0 голосов
/ 06 июня 2018

Я наконец изменился на следующие условия:

lower(function('encode', (function('lo_get', cast(x.diagnosis as integer))), 'escape') like lower(concat('TEXT TO SEARCH', '%'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...