Как запросить список объектов с параметрами, которые могут быть не введены? - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь запросить список объектов, отфильтрованных по параметрам, которые пользователь может вообще не ввести.

@Query(value = "SELECT  * " +
        "FROM project  " +
        "WHERE CASE WHEN (:location is not null) THEN location_Id LIKE :location" +
        " and CASE WHEN (:category is not null) THEN category_Id LIKE :category", nativeQuery = true)
List<Project> getProjects(@Param("category") List<Category> category,
                          @Param("location") List<Location> location);

Но я продолжаю получать похожие ошибки, что мой синтаксис неправильный, даже если я просто скопировал его из учебника.Есть идеи, где я могу ошибаться?

1 Ответ

0 голосов
/ 21 января 2019

Если вы хотите один запрос:

WHERE (:location is null OR location_Id LIKE :location) AND
      (:category is null OR category_Id LIKE :category)

С точки зрения производительности, OR может снизить производительность (запретить использование доступных индексов). Часто приложения создают предложение WHERE для значений, отличных от NULL.

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