JPQL, удаление значений с отметкой времени старше 1 дня - PullRequest
3 голосов
/ 06 декабря 2011

Я пытаюсь написать оператор JPQL, который удаляет все значения в таблице с отметкой времени, превышающей 1 день. Прямо сейчас у меня есть рабочий оператор, который удаляет все значения старше текущего времени, но мне нужно изменить его, чтобы он удалял значения старше 1 дня.

Как я могу изменить это утверждение:

Query q = em.createQuery("DELETE FROM Statustable t WHERE t.ts < CURRENT_TIMESTAMP");

Я пытался найти в JPA API способ манипулирования значением Current_TIMESTAMP, чтобы я мог сделать что-то вроде «(CURRENT_TIMESTAMP -1)», чтобы указать «старше 1 дня». Я знаю, что синтаксис неправильный, но он должен помочь вам понять, что я пытаюсь сделать.

1 Ответ

8 голосов
/ 06 декабря 2011

Функции даты в JPA очень ограничены, но ваша проблема может быть легко решена путем вычитания 1 дня из текущей даты в Java, а затем использования параметризованного запроса:

Date yesterday = DateUtils.addDays(new Date(), -1);
Query q = em.createQUery("DELETE FROM Statustable t WHERE t.ts < :yesterday");
q.setParameter("yesterday", yesterday);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...