SQL为JPA2。如何使用MAX(),GROUP BY,ORDER BY,LIMIT和FOUND_ROWS()在JPA2中创建CriteriaQuery

时间:2013-01-27 08:21:28

标签: count subquery jpa-2.0 aggregation criteriaquery

在MySQL中,我能够为所需的列,组和顺序记录选择MAX值,限制结果并获得两个SQL语句(执行)中的总行数:

SELECT SQL_CALC_FOUND_ROWS b.class, b.age FROM (
    SELECT students.*, max(age) FROM `students`GROUP BY class LIMIT 0,10
) as b;
SELECT FOUND_ROWS() as total;

从250条记录中选择24条为正确的总数。 (24个独特的课程)

我可以选择分组记录,但不知道如何获得总计数。此外,结果是List<列表与LT;学生> + MAX(年龄)>。但是,如果没有groupBy和max(),它会产生List<学生>如预期的那样。

CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery q = qb.createQuery();

Root e = q.from(Student.class);
Expression maxExpression = qb.max(e.get("age"));

CriteriaQuery<Object> cq = q.multiselect(e, maxExpression);
cb.groupBy(e.get("class"));

TypedQuery typedQuery = em.createQuery(cb);
List<Student> students = typedQuery.getResultList();

是否可以在JPA2中获得与List相同的结果?

0 个答案:

没有答案