我有一个问题,我正在工作的层的代码接收 CriteriaQuery 对象。我几乎没有关于查询的其他信息(尽管我可以很好地猜测它应该返回的对象或对象列表的类型。)我需要做的是确定它将返回的项目数而不创建所有对象.
我想做的是 SELECT count(*) from ([SQL version of the CriteraQuery])
我试图创建一个新的 CriteriaQuery 并将 CriteriaQuery 参数用作子查询,但找不到这样做的方法。
我试图解析 CriteriaQuery 以构造一个正确的 count() 查询,但没有运气确定 where 子句的各个部分。
我找不到从 CriteriaQuery 生成的 TypedQuery 中检索 SQL 语句的方法。
因此,缺少以下内容:
long getCount(CriteriaQuery<?> query)
{
return entityManager.createQuery(query).getResultList().size();
}
无论如何确定将由 CriteriaQuery 返回的对象/行数?
这与在 JPA 2 中使用 CriteriaQuery 不同,如何计算结果 是因为该问题涉及构建 CriteriaQuery 的情况。在这种情况下,我们得到一个构造的 CriteriaQuery(例如 public int getCount(CriteriaQuery query))