То, что я пытаюсь сделать, это считает строка подходит к напечатали критерии (я должен предупредить пользователь, что поиск будет провести некоторое время x rows * (estimated time for one row)
, мой код выглядит следующим образом:Как подсчитать количество строк в Criteria Апи
CriteriaBuilder qb = em.getCriteriaBuilder();
CriteriaQuery<Long> criteria = qb.createQuery(Long.class);
Root<TrackingDAO> p = criteria.from(TrackingDAO.class);
criteria.select(qb.count(criteria
.from(TrackingDAO.class)));
/* my stuff with criteria */
TypedQuery<Long> q = em.createQuery(criteria);
setCounterOfLookUpResults(q.getSingleResult());
Класс работает отлично, пока я не получил результаты, они совершенно странно, как, например, 56432 и я ожидаю, например, 430.
Может кто-нибудь сказать мне, как «пинг» базы данных и спросить, сколько строк он собирается Предоставьте мне, прежде чем я извлечу эти строки?
Вы код выглядит хорошо для меня, вы уверены в своих критериях и присоединяетесь? – ssssteffff
Моих критерии выглядят следующим образом: criteria.where (qb.and (qb.like (р прибудет (EntityName), пары), \t \t \t qb.between (р прибудет ("начальное время"), getFromTime..(), \t \t \t getToTime()), \t \t \t qb.equal (р прибудете ("статус".), GetStatus()) \t \t \t)); Теперь я попробовал снова, и результаты кода выше были 13112, тогда как окончательный эффект был всего 2 строки! не знаю, где проблема –
criteria.select (qb.count (p.get (TrackingDAO_.id))); как предложил Роман С, отлично работал. –