[英]How do I write query to get record that are created one week ago in JPA
在下面的存储库中,我想获取一周前放置的那些记录(订单),我正在使用以下代码,但发生错误,并且每隔一段时间就会说出意外的令牌所以有人帮我吗?
public interface OrderRepository extends JpaRepository<Order, Long> {
@Query("Select Order where orderDate < SQL((? - interval '3' minute), CURRENT_TIMESTAMP)")
Order currentOrder();
// I also tried following query
@Query("Select Order where orderDate > NOW() - interval 1 WEEK")
Order currentOrder();
}
JPA对日期函数的支持并不多,因此您可能无法从命名查询中获得所需的行为。
但是,常规的JPQL查询应该可以工作,因为我们可以绑定任何我们想要的日期。 请尝试以下方法:
public List findOrdersLastWeek() {
Calendar cal = new GregorianCalendar();
cal.add(Calendar.DAY_OF_MONTH, -7);
Date lastWeekDate = cal.getTime();
return entityManager.createQuery(
"SELECT o from Orders o WHERE o.orderDate > ?1")
.setParameter(1, lastWeekDate, TemporalType.DATE);
}
你的答案应该是这样的
List findByUserAndCreatedAtBetween(User user, String todayString, String sevenDaysBeforeString);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.