Il semble que vous recherchiez une solution avec JPQL pour effectuer des requêtes telles que SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10
.
J'ai bien peur qu'il n'y ait pas une telle fonctionnalité dans JPQL, je recommande donc d'utiliser le SQL natif. Votre idée si vous étendez Dialect avec le SQLFunctionTemplate
d'Hibernate était très intelligent. Je préfère le changer pour utiliser DATE_PART('day', end - start)
car c'est le moyen d'obtenir une différence de jours entre les dates avec PostgreSQL.
Vous pouvez également définir votre fonction dans PostgreSQL et l'utiliser avec les critères 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);