Hibernate Criteria :Ordering the results

In this section, you will learn about ordering the results using Hibernate Criteria query.

Hibernate Criteria :Ordering the results

Hibernate Criteria :Ordering the results

In this section, you will learn about ordering the results using Hibernate Criteria  query.

Hibernate Criteria API permits to create and execute object oriented queries. It is more refined substitute of Hibernate Query Language (HQL). Criteria Query is more effective in case of multiple criteria search. The org.hibernate.Criteria interface is basically used to create the criteria for the search.

The project hierarchy is given below :

The code of the hibernate.cfg.xml is given below :

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://192.168.10.13:3306/anky</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>

<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">validate</property>

<mapping class="net.roseindia.Worker"/>

</session-factory>
</hibernate-configuration>

The code of Worker.java is given below :

package net.roseindia;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "worker")
public class Worker {

@Id
@GeneratedValue
@Column(name = "worker_id")
private Long workerId;



@Column(name = "firstname")
private String firstname;

@Column(name = "lastname")
private String lastname;

@Column(name = "birth_date")
private Date birthDate;

@Column(name = "cell_phone")
private String cellphone;

public Worker() {

}

public Worker(String firstname, String lastname, Date birthdate,
String phone) {
this.firstname = firstname;
this.lastname = lastname;
this.birthDate = birthdate;
this.cellphone = phone;

}

public Long getWorkerId() {
return workerId;
}

public void setWorkerId(Long workerId) {
this.workerId = workerId;
}

public String getFirstname() {
return firstname;
}

public void setFirstname(String firstname) {
this.firstname = firstname;
}

public String getLastname() {
return lastname;
}

public void setLastname(String lastname) {
this.lastname = lastname;
}

public Date getBirthDate() {
return birthDate;
}

public void setBirthDate(Date birthDate) {
this.birthDate = birthDate;
}

public String getCellphone() {
return cellphone;
}

public void setCellphone(String cellphone) {
this.cellphone = cellphone;
}
}

The code of the HibernateCriteriaOrdering.java is given below :

package net.roseindia;

import java.util.Iterator;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateCriteriaOrdering {
private static SessionFactory sf;
private static ServiceRegistry serviceRegistry;

public static void main(String[] args) {
try {
Configuration configuration = new Configuration();
configuration.configure()
.setProperty("hibernate.show_sql", "false");
;
serviceRegistry = new ServiceRegistryBuilder().applySettings(
configuration.getProperties()).buildServiceRegistry();
sf = configuration.buildSessionFactory(serviceRegistry);
} catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
System.out
.println("********Hibernate Criteria Ordering Example********");
Session session = sf.openSession();

// Criteria crit = session.createCriteria(net.roseindia.Worker.class);
// crit.setMaxResults(5);
List workers = session.createCriteria(net.roseindia.Worker.class).add(
Restrictions.like("firstname", "s%")).addOrder(
Order.asc("firstname")).addOrder(Order.desc("birthDate"))
.setMaxResults(5).list();
System.out
.println("--------------------------------------------------------");
for (Iterator it = workers.iterator(); it.hasNext();) {
Worker worker = (Worker) it.next();
System.out.println("Worker ID: " + worker.getWorkerId());
System.out.println("First Name: " + worker.getFirstname());
System.out.println("Last Name: " + worker.getLastname());
System.out.println("Birth Date: " + worker.getBirthDate());
System.out.println("Cell Phone: " + worker.getCellphone());
System.out
.println("--------------------------------------------------------");
}
session.close();
}
}

Output

********Hibernate Criteria Ordering Example********
--------------------------------------------------------
Worker ID: 11
First Name: Sameer
Last Name: Nahata
Birth Date: 1981-09-30 00:00:00.0
Cell Phone: 919191929292
--------------------------------------------------------
Worker ID: 9
First Name: Sushmita
Last Name: Dasgupta
Birth Date: 1987-05-21 00:00:00.0
Cell Phone: 919595959595
--------------------------------------------------------

Download Source Code