Критерии API - нелегальное состояние исключения - PullRequest
0 голосов
/ 28 ноября 2018

Я написал следующий код с использованием Criteria Api:

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();

CriteriaQuery<Entity> criteriaQuery = criteriaBuilder.createQuery(Entity.class);
Root<Entity> root = criteriaQuery.from(Entity.class);
criteriaQuery.select(root);

CriteriaQuery<Long> countQuery = criteriaBuilder.createQuery(Long.class);
countQuery.select(criteriaBuilder.count(root));

Long countOfRows = entityManager.createQuery(countQuery).getSingleResult();

В результате я получаю исключение:

java.lang.IllegalStateException: нет критериев корней запросовбыли указаны

Исключение выдается методом getSingleResult (последняя строка кода).Спасибо за помощь!

1 Ответ

0 голосов
/ 28 ноября 2018

Работает после принудительного countQuery для добавления root:

((QueryStructure)((CriteriaQueryImpl)countQuery).queryStructure).roots.add(root)
...