Как подсчитать строки в языке запросов Hibernate?
Я пытаюсь получить только количество возвращенных строк, а не все результаты из таблицы.
я увидел, что это можно сделать так:
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
но когда пытаюсь сохранить этот запрос в целочисленном формате(он говорит, что не может конвертировать из Query to Integer
)
Я использую динамический запрос, где значения будут упомянуты ниже запроса, как это
theQuery = "select count(*) from THM as thm " +
"join thm.TMC as tmc " +
"join tmc.TIMCC as timcc " +
"where thm.Qid = :Qid and thm.Cv = :Cv and timcc.Did = :Did and timcc.Cv= :Cv";
Query query = session.createQuery(theQuery);
query.setInteger("Qid", Integer.parseInt(Qid));
query.setInteger("Did", Did);
query.setInteger("Cv",cV);
теперь, как я могу получить количество всех строк, возвращаемых с помощью Hibernate-запроса в переменной без использования list.size
но непосредственно из запроса?
3 ответов
вы пробовали запрос.uniqueResult ();? Поскольку ваш Select count (*) даст вам только одно число, вы сможете получить его с помощью такого запроса, как int count = (Integer).uniqueResult ();
рассчитывать на основе критериев, вы можете сделать это:
Criteria criteria = currentSession().createCriteria(type);
criteria.setProjection(Projections.rowCount());
criteria.uniqueResult();
Я использую критерии прямо сейчас, поэтому я точно знаю, что это работает. Я видел решение uniqueResult () на веб-сайте здесь: http://www.jroller.com/RickHigh/entry/hibernate_pagination_jsf_datagrid_prototype1
вы можете сделать это
long count = (long)session.createQuery("SELECT COUNT(e) FROM Employees e").getSingleResult();
попробовать его.
Long count = ((Long) session.createQuery("select count(*) from Book").uniqueResult());
Integer totalBooks = count.intValue();