Например, если у нас есть таблица Books, как бы мы подсчитали общее количество книжных записей с гибернацией?Как подсчитать строки, используя Hibernate?
ответ
Предполагая, что имя класса является книга:
return (Number) session.createCriteria("Book").setProjection(Projections.rowCount()).uniqueResult();
Это по крайней мере Number
, скорее всего, в Long
.
Вы можете попробовать count(*)
Integer count = (Integer) session.CreateQuery("select count(*) from Books").uniqueResult();
Где Books
это имя от class
- не таблица в базе данных.
В Java я обычно нужно возвращать Int и использовать эту форму:
int count = ((Long)getSession().createQuery("select count(*) from Book").uniqueResult()).intValue();
Принятый ответ на этот вопрос не сработал для меня, но ваш сделал. Благодаря! –
- это самый быстрый и дешевый способ получить счетчик запросов? я имею в виду hibernate-wise – kommradHomer
Какой смысл использовать ORM, если мы все равно закончим кодирование SQL? – thermz
Вот что official hibernate docs tell нам об этом:
Вы можете подсчитать количество результатов запроса, не возвращая их:
((Integer) session.createQuery("select count(*) from ....").iterate().next()).intValue()
Однако, он не всегда возвращает экземпляр Integer
, поэтому лучше использовать java.lang.Number
для обеспечения безопасности.
+1 для ответа, который дает рекомендуемый метод команды Hibernate. – Tom
Это сработало для меня. – abbas
Для меня это дало «java.lang.ClassCastException: java.lang.Long не может быть добавлено в java.lang.Integer», но приведение к длинному вместо этого работает ... – rogerdpack
Long count = (Long) session.createQuery("select count(*) from Book") .uniqueResult();
отлажены ваш ответ, чтобы добавить примечание о производительности – rajadilipkolli
Должно быть '' 'Long count = (Long) session.createQuery (" select count (1) from Book "). uniqueResult();' '' это улучшит производительность – rajadilipkolli
Если вы используете Hibernate 5+, то запрос будет изменен
Long count = session.createQuery("select count(1) from Book")
.getSingleResult();
Или, если вам нужно TypedQuery
Long count = session.createQuery("select count(1) from Book",Long.class)
.getSingleResult();
- 1. Как подсчитать строки, используя Hibernate с предложением where?
- 2. Как подсчитать строки DataGridView?
- 3. Как подсчитать строки
- 4. Как подсчитать слова, используя элемент, используя Javascript?
- 5. Как подсчитать число, используя int?
- 6. Как подсчитать, используя LEFT JOIN?
- 7. как подсчитать данные, используя solr
- 8. Как подсчитать для каждой строки, используя другую таблицу в SQL?
- 9. Как подсчитать все строки в таблице Hbase, используя Scala
- 10. Как подсчитать строки в MySQL?
- 11. Как подсчитать строки в JOIN?
- 12. Как подсчитать элементы в iTunes, используя Applescript
- 13. Как подсчитать расширенные строки запроса
- 14. Как подсчитать строки в MySqlDataReader?
- 15. Как подсчитать строки в строке?
- 16. Как подсчитать все строки файлов
- 17. SSRS: Как подсчитать истинные строки
- 18. Как подсчитать строки, затронутые каскадом
- 19. Подсчитать слова из строки
- 20. Как подсчитать пустые строки в файле python
- 21. Как подсчитать коэффициенты в ячейке, используя R?
- 22. Как подсчитать числа, представляющие деньги, используя Perl?
- 23. Как подсчитать количество кликов, используя JavaScript?
- 24. Как подсчитать количество рядов гистограмм, используя jfree
- 25. Как подсчитать количество строк, используя JPA?
- 26. Подсчитать количество экземпляров строки
- 27. Как подсчитать строки в SQLite.Net и Xamarin.Forms?
- 28. подсчитать количество слов, используя HashMap
- 29. Невозможно подсчитать символы, используя jQuery
- 30. Как подсчитать вхождения строки в MySQL
Он возвращает длинный. –
Как @Salandur предлагает: «Это хотя бы номер», а тип номера имеет «intValue()», «longValue() ", поэтому мы можем легко получить желаемый примитивный тип, который нам нужен: ((Number) criteria.uniqueResult()). intValue() –
Он возвращает тип 'Object'. – Lion