如何将mysql查询转换为jpa命名查询



我有一个Order

order_id | customer_id | submit_date | order_number |。。。。

目前我正在使用jpa named query 获取基于customer_id的所有记录

public List<Order> readOrders(Long customerId){
 Query query = em.createNamedQuery("select order from com.mycompany.Order where order.customer.id = :customerId");
 query.setParameter("customerId", customerId);
 return query.getResultLis();
}

上面的查询工作正常,它从数据库中获取所有记录,但我的任务是只从过去的15 days中获取记录,为此我知道sql query

select * from Oder where SUBMI_DATE between date_sub(sydate(), interval 15 day) and sydate() and customer_id = 101;

上面的sql query工作正常,但我的问题是我不知道如何将上面的sql query转换为jpa named query。有人能在这个上提供帮助吗?

假设sql SUBMI_DATE的对象等价物是submitDate

public List<Order> readOrders(Long customerId){
  Query query = em.createNamedQuery("select order from com.mycompany.Order where order.customer.id = :customerId and order.submitDate > :specificDate");
  // I use Joda time you can use java.util.Date directly
  DateTime specificDate= new DateTime().minusDays(15);
  query.setParameter("customerId", customerId);
  query.setParameter("specificDate", specificDate.toDate(),TemporalType.DATE);
 return query.getResultLis();
}

最新更新