У меня проблема, когда код на слое, в котором я работаю, получает объект CriteriaQuery. У меня практически нет другой информации о запросе (хотя я могу сделать хорошее предположение о типе объекта или списка объектов, который он должен вернуть). Что мне нужно сделать, так это определить количество элементов, которые он вернет, не создавая все объекты .
Я хотел бы сделать что-то вроде SELECT count(*) from ([SQL-версия CriteraQuery])
Я попытался создать новый CriteriaQuery и использовать параметр CriteriaQuery в качестве подзапроса, но не смог найти способ сделать это.
Я попытался разобрать CriteriaQuery, чтобы создать правильный запрос count(), но мне не удалось определить различные части предложения where.
Я не смог найти способ получить инструкцию SQL из TypedQuery, сгенерированного из CriteriaQuery.
Итак, если не считать чего-то вроде следующего:
long getCount(CriteriaQuery<?> query)
{
return entityManager.createQuery(query).getResultList().size();
}
можно ли в любом случае определить количество объектов/строк, которые будут возвращены CriteriaQuery?
Это отличается от в JPA 2, используя CriteriaQuery, как подсчитывать результаты в том, что этот вопрос касается случая, когда кто-то создает CriteriaQuery. В этом случае нам дается сконструированный CriteriaQuery (например, public int getCount(CriteriaQuery query))