Spring data jpa like query, совместимый с Oracle и Postgres - PullRequest
0 голосов
/ 06 августа 2020

У меня есть репозиторий данных Spring со следующим методом.

Page<FooEntity> findAllByTenantNameAndEventTypeContainingIgnoreCaseAndReferenceContainingIgnoreCaseAndSourceServiceInIgnoreCase( //NOSONAR
        String tenantName,
        String eventType,
        String reference,
        List<String> services,
        Pageable pageable);

Каждый раз, когда значения для полей: tenantName , eventType , ссылка пусты, в Postgres он возвращает ожидаемый список.

Но для базы данных Oracle он не возвращает данные.

Я знаю, что это потому, что Oracle внутренне переводит пустую строку в ноль. Я не получаю данные из-за этого.

Как сделать этот метод запроса совместимым с Postgres и Oracle?

1 Ответ

0 голосов
/ 06 августа 2020

К сожалению, на уровне базы данных это не исправлено - см. https://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements005.htm#SQLRF51081, где даже Oracle подтверждает тот факт, что это не оптимально:

Oracle База данных в настоящее время обрабатывает символьное значение нулевой длины как нулевое. Однако это может измениться в будущих выпусках, и Oracle рекомендует не обрабатывать пустые строки так же, как нули.

Итак, что касается вашей проблемы, я думаю, вам нужно найти способ решить эту проблему на уровне приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...