【发布时间】:2015-02-16 18:40:48
【问题描述】:
我正在尝试在我的系统中构建分页。在 DAO 中,我使用“setFirstResult()”和“setMaxResults()”来限制返回的行数。
看:
Query query = entityManager.createNamedQuery(namedQuery);
if (firstResult != null) {
query.setFirstResult(firstResult);
}
if (maxResult != null) {
query.setMaxResults(maxResult);
}
List returnList = query.getResultList();
但是对于分页工作,我需要不受限制地知道行数(firstResult() 和 maxResults())。
如果我有这个查询:
SELECT * FROM MyEntity e WHERE e.car = :carParam OFFSET 10 LIMIT 20
我想这样算
SELECT Count(*) FROM MyEntity e WHERE e.car = :carParam
但我想避免为每个实体手动创建另一个查询,如何在不强制创建新的 count() 查询的情况下执行 count()?
【问题讨论】:
-
我没有使用标准
-
你不能。您必须发出单独的
count(*),因为 SQL 查询本质上不会返回匹配记录的总数。 -
这就是我所担心的