How to count the number of rows of a JPA 2 CriteriaQuery in a generic JPA DAO?
posted 4 years ago
I'm new in JPA and want to implement a generic JPA DAO and need to find the number of rows of a query result set to implement pagination. After searching the web, I can't find a practical way to do that. Here is the code suggested in many articles:
However, that code doesn't work when using `join`. Is there any way to count the rows of a query result set using the JPA Criteria API?
here is the code that create CriteriaQuery :
and some joins may be added to the root until the query have been executed:
and the generated exception is like :
> org.hibernate.hql.ast.QuerySyntaxException: Invalid path:
> 'generatedAlias1.id' [select count(generatedAlias0) from entity.Entity
> as generatedAlias0 where ( generatedAlias0.id>=13L ) and (
> (generatedAlias1.id<=34L ) )]
which generatedAlias1 should be on Entity and generatedAlias0 should be on the association that I joined on that.
Note that I implement Join properly because when I execute query without count query it executes without error and the Join works properly but when I try to execute count query it throws exception.