JAVA EclipseLink необязательные параметры запроса

Dziuzepe спросил: 27 ноября 2017 в 06:18 в: java

У меня есть запрос, который фильтрует элементы по определенным условиям:

@NamedQueries({
        @NamedQuery(
                name = ITEM.FIND_ALL_PARAMS_BY_COMPANY_COUNTRY_GROUP,
                query = "SELECT i FROM Item i where "
                        + "((i.idCompany=:companyId AND i.idEMGroup=:groupId) "
                        + "OR (i.idCompany=:companyId AND i.idEMCountry =:countryId AND i.idEMGroup is null) "
                        + "OR (i.idCompany is null AND i.idEMCountry = :countryId AND i.idEMGroup is null)) "
                        + "order by i.idEMCountry desc, i.idCompany desc, i.idEMGroup desc")
})

В некоторых случаях параметры idEMGroup o companyId могут быть null, который генерирует sql, похожий на этот IdEmCompany = 200630758) AND (IdEMGroup = NULL), и это неверный синтаксис sql, возможно ли динамически, если для него значение равно нулю как 'Column IS NULL' вместо 'Column = NULL' без добавления большого количества if, или просто лучше переписать этот запрос с помощью Criteria API и просто проверить, присутствует ли значение, и добавить предикаты при определенных условиях.

0 ответов