How do we count rows using older versions of Hibernate (~2009)?
Solution 1:
For older versions of Hibernate (<5.2):
Assuming the class name is Book:
return (Number) session.createCriteria("Book")
.setProjection(Projections.rowCount())
.uniqueResult();
It is at least a Number
, most likely a Long
.
Solution 2:
In Java i usually need to return int and use this form:
int count = ((Long)getSession().createQuery("select count(*) from Book").uniqueResult()).intValue();
Solution 3:
Here is what official hibernate docs tell us about this:
You can count the number of query results without returning them:
( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()
However, it doesn't always return Integer
instance, so it is better to use java.lang.Number
for safety.
Solution 4:
You could try count(*)
Integer count = (Integer) session.createQuery("select count(*) from Books").uniqueResult();
Where Books
is the name off the class
- not the table in the database.
Solution 5:
If you are using Hibernate 5+, then query will be modified as
Long count = session.createQuery("select count(1) from Book")
.getSingleResult();
Or if you Need TypedQuery
Long count = session.createQuery("select count(1) from Book",Long.class)
.getSingleResult();