繁体   English   中英

如何编写查询以获取一周前在 JPA 中创建的记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM