Запрос SQL, если критерии не нулевые - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь написать запрос, который выполняет поиск по нескольким критериям.

Мой текущий запрос JPA:

@Query("SELECT c FROM Client c " +
    "INNER JOIN c.entite e " +
    "WHERE e.numeroLicence in (:numerosLicence) " +
    "AND (UPPER(c.nom) LIKE CONCAT('%',UPPER(:nom),'%') " +
    "AND (c.prenom IS NOT NULL AND UPPER(c.prenom) LIKE CONCAT('%',UPPER(:prenom),'%')) " +
    "AND (c.dateCreation IS NOT NULL AND c.dateCreation > :dateCreation) " +
    "AND (c.dateCreation IS NOT NULL AND c.dateModification > :dateModification) " +
    "AND (c.dateCreation IS NOT NULL AND c.dateSuppression > :dateSuppression)) ")
Page<Client> recherche(@Param("numerosLicence") ArrayList numerosLicence,
                       @Param("nom") String nom,
                       @Param("prenom") String prenom,
                       @Param("dateCreation") ZonedDateTime dateCreation,
                       @Param("dateModification") ZonedDateTime dateModification,
                       @Param("dateSuppression") ZonedDateTime dateSuppression,
                       Pageable pageable);

Проблема заключается в том, что он автоматически исключает строки, в которых находится столбецсодержит NULL.

Мне нужно будет сделать выбор только для столбцов с данными, он не будет пытаться выполнить предложение, если значение поля равно NULL

Например, если у меня естьстрока, чей столбец firstname равен NULL, тогда эта строка автоматически исключается из результата, тогда как я бы не хотел проверять этот столбец, если он равен NULL

У вас есть идея?Я ищу решение, чтобы избежать создания максимально возможного количества комбинаций

1 Ответ

0 голосов
/ 04 октября 2018

Звучит так, будто вы должны использовать OR вместо AND:

c.dateCreation IS NULL
   OR c.dateCreation > :dateCreation
...