Я сделал какой-то метод в репозитории 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 может быть хорошим вариантом для этого запроса.