尝试在CriteriaQuery中使用,但不断遇到编译问题!
数据作为参数传递,请参阅以下代码:
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 :(得分: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();