0

我需要使用 Specifications 使用聚合函数进行 JPQL 查询。我想要类似的东西

myQuery="select sum(et.durationMinutes/et.percent) from EmployeeTimekeeping et"
myQuery.where(specifications)
myQuery.getResultList();

我正在尝试使用 Specifications 对象而不是我的 where 子句。有没有办法做这样的事情?

谢谢!

4

1 回答 1

0

CriteriaBuilder 中的表达式

要编写这样的查询,您可以使用Expression类。例如,像这样求和,你可以写:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Number> q = cb.createQuery(Number.class);
Root<EmployeeTimekeeping > t = q.from(EmployeeTimekeeping .class);

Expression<Double> sum = cb.sum(t.<Double>get("durationMinutes"), t.<Double>get("percent"));
q.select(sum.alias("sum"));

要像这样构建查询,您可以根据需要添加规范。

像你这样的问题已经被问过,从我读过的内容来看,构建动态 where 子句的最简单解决方案是使用 CriteriaAPI。

于 2018-04-27T15:11:21.627 回答