我正在执行任意的JPQL查询,我需要能够计算分页的总结果。
执行查询的示例代码:
public List<?> executeQuery (String jpqlQuery) {
List<?> results = null;
Query query = entityManager.createQuery (jpqlQuery);
try {
results = query.getResultList();
} catch PersistenceException|DatabaseException pe) {
// log error
}
return results;
}
注意:我在这里简化了查询以将其归结为基本问题,我们的实际方法采用其他参数,如页码,页面大小和有时查询提示。我们还必须考虑传入的搜索字段并在Query实例上设置为参数。
我想写一个上面的方法,它返回executeQuery方法使用的相同给定jpqlQuery的结果计数。在方法内部,我不知道查询中涉及哪些实体。
我有一个工作版本,涉及unwrap()查询,检索底层SQL并将其包装在计数查询中,但这样做需要一个会话,因此需要一个事务,我正在尝试远离。
非常感谢任何建议。