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

时间:2016-04-11 16:00:56

标签: java mysql hibernate jpa

我有一个Order

  

order_id | customer_id | submit_date | order_number | ....

目前,我使用customer_id

提取基于jpa named query的所有记录
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();
}

上面的查询工作正常,它从db获取所有记录,但我的任务是仅从过去的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以上任何人都可以请求帮助

1 个答案:

答案 0 :(得分:1)

假设您的对象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();
}