【发布时间】:2015-10-14 01:27:12
【问题描述】:
我的更改基于 Ish 答案:
public List<TopUpRAMSInfo> listadoTOPUP2(Date fechaI, Date fechaF) {
List<TopUpRAMSInfo> lista;
CriteriaQuery<TopUpRAMSInfo> data = cb.createQuery(TopUpRAMSInfo.class);
Root<TopUpRAMS> c = data.from(TopUpRAMS.class);
data.select(cb.construct(TopUpRAMSInfo.class,
c.get("deviceId"),
cb.sum(c.get("rechargeValue"))
)
);
data.where(cb.greaterThanOrEqualTo(c.get("connectionTime"), fechaI),
cb.lessThanOrEqualTo(c.get("connectionTime"), fechaF)
);
data.groupBy(c.get("deviceId"));
TypedQuery<TopUpRAMSInfo> datos = emDAO.createQuery(data);
lista = datos.getResultList();
return lista;
}
现在我遇到了这个错误: java.lang.IllegalArgumentException:查看类时发生异常:使用选择标准类型作为参数的构造函数的类 ENTITY.TopUpRAMSInfo。如果此 CriteriaQuery 不是构造函数查询,请验证选择是否与返回类型匹配。
----- 原帖-----
我在执行此操作时遇到了一些问题。这是我正在尝试构建的第一个真正的程序,我需要根据另一个领域来总结一个领域。
这是我目前的代码(请注意,TopUpRAMS 是我的实体,emDAO 是我的实体管理器。
public List<TopUpRAMS> listadoTOPUP2(Date fechaI, Date fechaF) {
List<TopUpRAMS> lista;
CriteriaQuery<TopUpRAMS> data = cb.createQuery(TopUpRAMS.class);
Root<TopUpRAMS> c = data.from(TopUpRAMS.class);
data.multiselect(c.get("deviceId"), cb.sum(c.get("rechargeValue")));
data.where(cb.greaterThanOrEqualTo(c.get("connectionTime"), fechaI));
cb.and(cb.lessThanOrEqualTo(c.get("connectionTime"), fechaF));
data.groupBy(c.get("deviceId"));
TypedQuery<TopUpRAMS> datos = emDAO.createQuery(data);
lista = datos.getResultList();
return lista;
}
【问题讨论】: