We will discuss different criteria which can be added to make a successful query in different conditions.
Let’s discuss simple examples to start understanding this.
I am assuming that you have read my older post so I am not rewriting the hibernate configuration file, utility class.
There is some change in course class. Below are the records which are within this table.
We make a class Course and we will perform operation on this class using the Hibernate Criteria Query.
Listing 1: Course class
package model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
*
* @author Anurag
*/
@Entity
public class Course implements Serializable {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Long id;
private String name;
private int duration;
private int rating;
public Course() {
}
public Course(String n, int dur, int r) {
name = n;
duration = dur;
rating = r;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public int getRating() {
return rating;
}
public void setRating(int rating) {
this.rating = rating;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Now we make the main class which will use the hibernate criteria query.
Listing 2: App2 class (and method)
package Main;
/**
*
* @author Anurag
*/
import java.util.Iterator;
import java.util.List;
import model.Course;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
public class App2 {
public static void main(String args[]) {
SessionFactory sf = Utility.getSessionFactory();
Session s = sf.getCurrentSession();
Transaction tx = s.beginTransaction();
Criteria crit = s.createCriteria(Course.class);
crit.add(Expression.and(Expression.gt("duration", 6), Expression.lt("duration", 12)));
List course = crit.list();
for (Iterator it = course.iterator(); it.hasNext();) {
Course c = (Course) it.next();
System.out.println("ID: " + c.getId());
System.out.println("Name: " + c.getName());
System.out.println("Duration: " + c.getDuration());
}
tx.commit();
}
}

Figure 1: App2 class (and method)
Listing 3: App2 class (or method)
package Main;
/**
*
* @author Anurag
*/
import java.util.Iterator;
import java.util.List;
import model.Course;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
public class App2 {
public static void main(String args[]) {
SessionFactory sf = Utility.getSessionFactory();
Session s = sf.getCurrentSession();
Transaction tx = s.beginTransaction();
Criteria crit = s.createCriteria(Course.class);
crit.add(Expression.or(Expression.gt("duration", 6), Expression.lt("duration", 12)));
List course = crit.list();
for (Iterator it = course.iterator(); it.hasNext();) {
Course c = (Course) it.next();
System.out.println("ID: " + c.getId());
System.out.println("Name: " + c.getName());
System.out.println("Duration: " + c.getDuration());
}
tx.commit();
}
}

Figure 2: Method usage
Listing 4: App2 class (not method)
package Main;
/**
*
* @author Anurag
*/
import java.util.Iterator;
import java.util.List;
import model.Course;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
public class App2 {
public static void main(String args[]) {
SessionFactory sf = Utility.getSessionFactory();
Session s = sf.getCurrentSession();
Transaction tx = s.beginTransaction();
Criteria crit = s.createCriteria(Course.class);
crit.add(Expression.not(Expression.ge("id",2l)));
List course = crit.list();
for (Iterator it = course.iterator(); it.hasNext();) {
Course c = (Course) it.next();
System.out.println("ID: " + c.getId());
System.out.println("Name: " + c.getName());
System.out.println("Duration: " + c.getDuration());
}
tx.commit();
}
}

Figure 3: not method usage
After knowing the above logical methods, you must also know the below most used method. This can be used to check if two values are equal or not.
Listing 5: App2 class (equal method)
package Main;
/**
*
* @author Anurag
*/
import java.util.Iterator;
import java.util.List;
import model.Course;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
public class App2 {
public static void main(String args[]) {
SessionFactory sf = Utility.getSessionFactory();
Session s = sf.getCurrentSession();
Transaction tx = s.beginTransaction();
Criteria crit = s.createCriteria(Course.class);
crit.add(Expression.eq("duration", 12));
List course = crit.list();
for (Iterator it = course.iterator(); it.hasNext();) {
Course c = (Course) it.next();
System.out.println("ID: " + c.getId());
System.out.println("Name: " + c.getName());
System.out.println("Duration: " + c.getDuration());
}
tx.commit();
}
}

Figure 4: Equal method usage
We will discuss some more methods in next coming articles. Hope you enjoyed this article. See you next time.







See the prices for this post in Mr.Bool Credits System below: