具有规范

时间:2018-04-27 13:35:02

标签: jpa spring-data-jpa jpql criteria-api specification-pattern

我需要使用规范来生成具有聚合函数的JPQL查询。我想要像

这样的东西
myQuery="select sum(et.durationMinutes/et.percent) from EmployeeTimekeeping et"
myQuery.where(specifications)
myQuery.getResultList();

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

谢谢!

1 个答案:

答案 0 :(得分: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"));

进行查询构建,您可以根据需要添加规范。

像你这样的问题是asked already,根据我的阅读,构建动态where子句的最简单的解决方案是使用CriteriaAPI。