Добавить количество дней в столбце localdate - PullRequest
0 голосов
/ 09 мая 2018

Я использую данные весны jpa

Я ищу что-то вроде

@Query("update FROM sample s set s.availableForTest=true WHERE (s.buildDate + s.delay) <= date and availableForTest=false")
public void updateToAvailabilityForTest(@Param("date") LocalDate date);

Задержка - это число дней, которое нужно добавить

Кажется, что невозможно с JPQL

1 Ответ

0 голосов
/ 09 мая 2018

Нет, это невозможно в 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

Хотя я не проверял идентификатор.

...