Нулевые параметры в Jpql, специфичные для Postgres

Я сделал какой-то метод в репозитории Spring Data. Идея состоит в том, чтобы сделать каждый параметр необязательным (допускающим значение NULL).

 @Query("SELECT lp FROM LicensePlatformEntity lp WHERE " +
        "(:ownerId is null or lp.ownerCompanyId = :ownerId) AND " +
        "(:assignedCompanyId is null or lp.assignedCompanyId = :assignedCompanyId) AND " +
        "(:assignedUserId is null or lp.assignedUser.id = :assignedUserId) AND " +
        "(:isAssigned is null or lp.assignedCompanyAcceptedLicense = :isAssigned)")
List<LicensePlatformEntity> findAllByFollowing(UUID ownerId, UUID assignedCompanyId, UUID assignedUserId, Boolean isAssigned);

Прекрасно работает на H2 in memory database, но Постгрес выбрасывает ex и утверждает, что он не может определить параметр% 1 или любой другой, который передан с нулевым значением. Следующий шаг - применять пагинацию, поэтому в настоящее время он работает с CriteriaBuilder, но не имеет хороших решений для разбивки на страницы, не основанных на ограничении смещения. Как сделать дополнительный поиск параметров подходящим для postgres с готовым решением для разбивки на страницы, которое не является подробным расширяемым и основано на стеке Spring? Ценю любую помощь!

пс. Была некоторая попытка явного преобразования параметров в типы гибернации, с полными ссылками на типы это выглядит ужасно.

Добавьте точное исключение. Просмотр ваших параметров Query By Example может быть хорошим вариантом для этого запроса.

Robert Niestroj 31.03.2021 22:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
22
0

Другие вопросы по теме