Как написать запрос JPA, чтобы игнорировать параметры NULL? - PullRequest
0 голосов
/ 27 мая 2020

Я выполняю приведенный ниже запрос в своем приложении SpringBoot, но получаю неожиданные результаты.

@Query(nativeQuery = true,
        value = "select * from record where (?1 IS null OR LOWER(title) like %?1%) AND (?2 IS null OR LOWER(record.type) like %?2%) AND (?3 IS null OR LOWER(category) like %?3%)" )
    List<Record> getRecordsByParams(String key, String type, String category);

Скажите, если моя база данных выглядит примерно так:

enter image description here

Теперь, если я ищу, скажем:

title= file,type=book, category = null;

, я ожидаю, что запрос будет работать и вернет записи с id = 1 и id = 3, но вместо этого У меня пустой список.

1 Ответ

0 голосов
/ 28 мая 2020

Попробуйте это решение. Это сработает. Я заменил? 1,? 2,? 3 на: имя_переменной

@Query(nativeQuery = true, value = "select * from record where (:key IS null OR LOWER(title) like %:key%) AND (:type IS null OR LOWER(record.type) like %:type%) AND (:category IS null OR LOWER(category) like %:category%)")
List<Record> getRecordsByParams(String key, String type, String category);
...