Есть способ обойти это, но вам нужен доступ к EntityManager, и вы не должны использовать аннотацию @Query
для создания этой реализации для вас.
Long count(Date from,Date to, String searchQuery) {
Number n = em.createNativeQuery("... that query")
.setParameter("from", from, TemporalType.DATE) // assuming that's a Date, and not TimeStamp
.setParameter("to", to, TemporalType.DATE)
.setParameter("searchQuery", "")
.setParameter("searchQuery", searchQuery)
.getSingleResult();
return n.longValue();
}
Первый вызов .setParameter("searchQuery", "")
сообщает Hibernate, какой это тип, следующий задает значение.
Проблема заключается в том, что Postgres выполняет проверку типов во время синтаксического анализа, а не откладывает ошибку в случае, если набор параметров равен нулю.