2015-10-06 58 views
0

試圖在CriteriaQuery之間使用,但不斷收到編譯問題!查詢中的日期問題之間的JAVA JPA

數據作爲參數傳遞,請參見下面的代碼:

public List<PlanTacticBuyFile> getByTacticIdsDates(List<Integer> ids, Date startDate, Date endDate) 
{ 
    CriteriaBuilder builder = em.getCriteriaBuilder(); 
    CriteriaQuery<PlanTacticBuyFile> q = builder.createQuery(PlanTacticBuyFile.class); 
    Root<PlanTacticBuyFile> c = q.from(PlanTacticBuyFile.class); 
    ParameterExpression<Date> d = builder.parameter(Date.class); 
    q.where(builder.and(c.get("tacticId").in(ids), 
      builder.between(builder.literal(startDate), c.get("startDate"), c.get("endDate")))); 

獲取編譯錯誤的第一個參數的之間的呼叫。

謝謝!

回答

0

如何參數化CriteriaQuery?我在代碼中看到了一個日期ParameterExpression對象,但我不確定您是否在其他地方使用過它。

CriteriaBuilder builder = em.getCriteriaBuilder(); 
CriteriaQuery<PlanTacticBuyFile> q = builder.createQuery(PlanTacticBuyFile.class); 
Root<PlanTacticBuyFile> c = q.from(PlanTacticBuyFile.class); 

ParameterExpression<Date> date = builder.parameter(Date.class, "startDate"); 
q.where(builder.and(c.get("tacticId").in(ids), 
     builder.between(date, c.get("startDate"), c.get("endDate")))); 
... 

em.createQuery(q).setParameter("startDate", startDate).getResultList(); 
+0

是的,我想不通你在哪裏發送參數與查詢之間的連接!感謝那! –