Изглежда, че търсите решение с JPQL за изпълнение на заявки като SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .
Опасявам се, че няма такава функционалност в JPQL, така че препоръчвам да използвате роден SQL. Вашата идея, ако разширите Dialect с SQLFunctionTemplate на Hibernate беше много умен. Предпочитам да го променя да използва DATE_PART('day', end - start) тъй като това е начинът да се постигне разлика в дните между датите с PostgreSQL.
Можете също да дефинирате функцията си в PostgreSQL и да я използвате с критерии function() .
'CREATE OR REPLACE FUNCTION "datediff"(TIMESTAMP,TIMESTAMP) RETURNS integer AS \'DATE_PART('day', $1 - $2);\' LANGUAGE sql;'
cb.function("datediff", Integer.class, end, start);