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

gmxoilav  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(138)

在下面的存储库中,我想获取一周前放置的那些记录(订单),我正在使用下面的代码,但发生了错误,并说在间隔时出现了意外令牌,有人能帮助我吗?

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();
}
lxkprmvk

lxkprmvk1#

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);
}
gzszwxb4

gzszwxb42#

你的答案应该是这样的
列表findByUserAndCreatedAtBetween(用户user,字符串todayString,字符串sevenDaysBeforeString);

相关问题