Vypadá to, že hledáte řešení s JPQL pro provádění dotazů jako SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10 .
Obávám se, že v JPQL taková funkce není, takže doporučuji použít nativní SQL. Váš nápad, jestli rozšířit Dialect o Hibernate's SQLFunctionTemplate byl velmi chytrý. Raději bych to změnil tak, aby používal DATE_PART('day', end - start) protože toto je způsob, jak dosáhnout rozdílu dnů mezi daty s PostgreSQL.
Můžete také definovat svou funkci v PostgreSQL a používat ji s kritérii 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);