java - Hibernate criteria return page and rowcount -
using hibernate criteria trying achieve pagination problem every page fetch have make 2 db calls 1 results , total records count. there efficient way in single db call can both data or can reduce db calls.
criteria criteria=session.createcriteria(student.class); criteria.setresulttransformer(criteria.distinct_root_entity); criteria.add(restrictions.ne("enquirystatus", enquiry.joined)); criteria.setmaxresults(10); criteria.setfirstresult((paginate.getstartindex()-1)*10); criteria.setprojection(projections.rowcount()); //here need fetch total row count , records
yes need separate query total result count.
query acountquery = session.createquery("select count(s.id) student s s.enquirystatus != :enquirystatus"); acountquery.setparameter("enquirystatus", enquiry.joined); long resultcount = (long)acountquery.uniqueresult();
or
criteria criteria=session.createcriteria(student.class); criteria.setresulttransformer(criteria.distinct_root_entity); criteria.add(restrictions.ne("enquirystatus", enquiry.joined)); criteria.setprojection(projections.rowcount()) long resultcount = (long)criteria.uniqueresult();
update
now can use same criteria results pagination , result count
criteria criteria=session.createcriteria(student.class); criteria.setresulttransformer(criteria.distinct_root_entity); criteria.add(restrictions.ne("enquirystatus", enquiry.joined)); criteria.setmaxresults(10); criteria.setfirstresult((paginate.getstartindex()-1)*10); list<student> students = criteria.list(); criteria.setprojection(null); criteria.setresulttransformer(criteria.distinct_root_entity); long resultcount = (long)criteria.uniqueresult();
Comments
Post a Comment