Нет, это невозможно в JPQL. Даже в обычном SQL это возможно, по крайней мере, в SQL Server и MySQL. Для этого есть специальные функции:
SQL Server - DATEADD
MySQL - DATE_ADD
Я думаю, что это возможно в Oracle.
Таким образом, самый простой способ - выполнить собственный запрос, используя функции добавления даты.
Если вы хотите остаться в мире JPQL и иметь доступный JPA 2.1, тогда в JPQL появилась функция FUNCTION
, которую можно использовать для вызова функций базы данных.
Обратите внимание, что:
FUNCTION
зависит от базы данных - она не переводит функцию
вызывать любым способом для поддержки разных баз данных как других функций JPQL
делаем.
В вашем случае и при использовании SQL Server это будет выглядеть так:
update FROM sample s set s.availableForTest=true WHERE FUNCTION('DATEADD', 'day' , s.delay, s.buildDate) <= :date and availableForTest=false
Хотя я не проверял идентификатор.