Sepertinya Anda mencari solusi dengan JPQL untuk melakukan kueri seperti SELECT p FROM Period p WHERE datediff(p.to, p.from) > 10
.
Saya khawatir tidak ada fungsi seperti itu di JPQL jadi saya sarankan menggunakan SQL asli. Ide Anda jika memperluas Dialek dengan SQLFunctionTemplate
Hibernate sangat pintar. Saya lebih suka mengubahnya untuk menggunakan DATE_PART('day', end - start)
karena ini adalah cara untuk mencapai perbedaan hari antara tanggal dengan PostgreSQL.
Anda juga dapat mendefinisikan fungsi Anda di PostgreSQL dan menggunakannya dengan kriteria 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);