Я видел, но это ж native query,а я все таки хотел оставить спецификации и hql. Но увы, как я понял, других способов пагинации у hql нет,и придется nativeQuery запрос строить if-ами
Не обязательно if-ами.
Динамически запрос лучше не строить, лишнее количество prepared запросов и вытеснение других запросов из кэшей БД.
При поиске можно статический указать все нужные варианты параметров
and t.field1 = nvl( :param , t.field1)...
При сортировке по одному столбцу можно тоже статику сделать:
order by
(case when :sort_column = 'col1' then col1 end),
(case when :in_sort_column = 'col2' then col2 end),
(case when :sort_column = 'col3' then col3 end)
По аналогии можно написать и для множественной сортировки, и для направления ASC, DESC