Pagination using a criteria

Now we will look at how to limit the number of rows using hibernate.

How to do it...

Here's a scenario to easily understand what we are about to do.

Let's consider that we have four rows in an employee table, and a SELECT * FROM employee SQL query returns all four records. However, if we want only the second and third records, we can use the SELECT * FROM employee LIMIT 1, 2 SQL statement.

Let's take a look at how to achieve such a condition in hibernate:

Code

Enter the following code to paginate using a criteria:

SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();

Criteria criteria = session.createCriteria(Employee.class);
criteria.setFirstResult(1); // represent LIMIT 1,* in MySQL
criteria.setMaxResults(2);// represent LIMIT *,2 in MySQL

List<Employee> employees = criteria.list();
for (Employee employee : employees) {
  System.out.println(employee.toString());
}

session.close();
HibernateUtil.shutdown();

Output

The output will be as follows:

Hibernate: select this_.id as id0_1_, this_.department as department0_1_, this_.firstName as firstName0_1_, this_.salary as salary0_1_, department2_.id as id1_0_, department2_.deptName as deptName1_0_ from employee this_ left outer join department department2_ on this_.department=department2_.id limit ?, ?

Employee
 id: 2
 first name: aarush
 salary: 35000.0
 department: developement

Employee
 id: 3
 first name: varsha
 salary: 30000.0
 department: UI/UX

You can use pagination and restrictions together as well.

How it works…

Here, two methods play a main role: the first is setFirstResult() and the second is setMaxResult(). The setFirstResult() method is used to set a start limit, and setMaxResult() is used to set the maximum limit. Hibernate adds the database-dependent clause; for example, hibernate adds the LIMIT clause here as the current database is MySQL.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.188.227.4