Я пишу именованный запрос JPA QL, который будет искать документы. Это должно быть сделано только в одном запросе, и я не могу переключиться на собственный SQL (это не функциональное требование).
Написанный мною запрос выглядит следующим образом:
query = "select doc from Doc doc " +
" join doc.Csts cst " +
" where cst.cstFrstNm like :FrstNm " +
" and cst.cstLastNm like :LastNm " +
" and doc.resId = :id ";
Этот запрос параметризован с использованием следующих инструкций:
query.setParameter("FrstNm ", firstName + '%');
query.setParameter("LastNm ", lastName + '%');
query.setParameter("id", resId);
firstName, lastName, resId
в приведенном выше коде мои критерии поиска, и все они являются строками, и они могут быть нулевыми. Когда один из них имеет значение null, это не должно учитываться при вызове запроса.
Например:
Допустим, что: firstName = "John", lastName = "Doe" и resId равны нулю, тогда запрос должен вернуть все записи из таблицы Doc, предназначенные для пользователя John Doe, независимо от их resId. *
Я пытался вставить в запрос дополнительные условия ИЛИ и И, которые бы проверяли, имеет ли resId значение NULL, но это не сработало. Я тестирую его на HSQLDB.
Есть ли способ изменить этот запрос JPA для обработки нулевых значений?