我正在尝试编写一个JPQL语句,删除时间戳大于1天的表中的所有值。现在我有一个工作语句,删除所有早于当前时间的值,但我需要修改它,以便删除超过1天的值。
如何修改此声明:
Query q = em.createQuery("DELETE FROM Statustable t WHERE t.ts < CURRENT_TIMESTAMP");
我一直在尝试搜索JPA API,了解如何操作Current_TIMESTAMP值,以便我可以执行类似“(CURRENT_TIMESTAMP -1)”的操作来表示“超过1天”。我知道语法是错误的,但它应该可以帮助你看到我正在尝试做什么。
答案 0 :(得分:8)
JPA的日期函数非常有限,但您可以通过在Java中将当前日期减去1天,然后使用参数化查询来轻松解决您的问题:
Date yesterday = DateUtils.addDays(new Date(), -1);
Query q = em.createQUery("DELETE FROM Statustable t WHERE t.ts < :yesterday");
q.setParameter("yesterday", yesterday);