The Criteria interface allows to create and execute object-oriented queries. It is powerful alternative to the HQL but has own limitations. Criteria Query is used mostly in case of multi criteria search screens, where HQL is not very effective. The interface org.hibernate.Criteria is used to create the criterion for the search. The org.hibernate.Criteria interface represents a query against a persistent class. The Session is a factory for Criteria instances. Here is a simple example of Hibernate Criterial Query
============================================================================
package run.test;
import java.util.Iterator;
import java.util.List;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Session;
import net.dharmaraj.model.Recipt;
import net.dharmaraj.util.HibernateUtil;
import net.dharmaraj.util.HibernateUtil;
public class CriteriMain {
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
System.out.println("Dharmaraj Test");
//Criteria Query Example
Criteria crit = session.createCriteria(Recipt.class);
List reciptList = crit.list();
//iterate result
for(Iterator it = reciptList.iterator();it.hasNext();)
{
Recipt recipt = (Recipt)it.next();
System.out.println("Id "+recipt.getId());
System.out.println("Name "+recipt.getName());
}//end of for loop
}//end of Method
}//end of Class
public static void main(String[] args) {
Session session = HibernateUtil.getSessionFactory().openSession();
System.out.println("Dharmaraj Test");
//Criteria Query Example
Criteria crit = session.createCriteria(Recipt.class);
List reciptList = crit.list();
//iterate result
for(Iterator it = reciptList.iterator();it.hasNext();)
{
Recipt recipt = (Recipt)it.next();
System.out.println("Id "+recipt.getId());
System.out.println("Name "+recipt.getName());
}//end of for loop
}//end of Method
}//end of Class
============================================================================
Criteria crit = session.createCriteria(Recipt.class);
//set max Result
crit.setMaxResults(10);
List reciptList = crit.list();
============================================================================
Narrowing the result set
Criteria crit = session.createCriteria(Recipt.class)
.add(Expression.like("name","Raj%"))
.add(Expression.between("id", 1350, 1450));
//set max Result
crit.setMaxResults(10);
List reciptList = crit.list();
.add(Expression.like("name","Raj%"))
.add(Expression.between("id", 1350, 1450));
//set max Result
crit.setMaxResults(10);
List reciptList = crit.list();
============================================================================
Criteria crit = session.createCriteria(Recipt.class)
.add(Expression.in("name", new String[] {"Dharmaraj","Mohan","Sudarsan"}));
.add(Expression.in("name", new String[] {"Dharmaraj","Mohan","Sudarsan"}));
============================================================================
Ordering the results by asc desc
Criteria crit = session.createCriteria(Recipt.class)
.add(Expression.like("name", "Raj%" ))
.addOrder(Order.asc("name"))
.addOrder(Order.desc("id"));
.add(Expression.like("name", "Raj%" ))
.addOrder(Order.asc("name"))
.addOrder(Order.desc("id"));
============================================================================
Associations
List cats = sess.createCriteria(Cat.class)
.createAlias("kittens", "kt")
.createAlias("mate", "mt")
.add( Expression.eqProperty("kt.name", "mt.name") )
.list();
============================================================================
Example queries
Cat cat = new Cat(); cat.setSex('F'); cat.setColor(Color.BLACK); List results = session.createCriteria(Cat.class) .add( Example.create(cat) ) .list(); Example example = Example.create(cat) .excludeZeroes() //exclude zero valued properties .excludeProperty("color") //exclude the property named "color" .ignoreCase() //perform case insensitive string comparisons .enableLike(); //use like for string comparisons List results = session.createCriteria(Cat.class) .add(example) .list();============================================================================Using the Hibernate Criteria APIriteria crit = session.createCriteria(Recipt.class); int startId = 1203; int endId = 1444; if (startId != 0 && startId > 1250) { crit.add(Expression.ge("id",startId)); } if (endId >1400) { crit.add(Expression.le("id",endId)); } //set max Result crit.setMaxResults(10); List reciptList = crit.list();============================================================================List sales = session.createCriteria(Sale.class) .add(Expression.ge("date",startDate); .add(Expression.le("date",endDate); .addOrder( Order.asc("date") ) .setFirstResult(0) .setMaxResults(10) .list();
The API also provides additional comparaison operators :like, between, in, isNull, isNotNull...============================================================================session.createCriteria(Sale.class)
.add(Expression.between("date", startDate, endDate))
.list(); ============================================================================
session.createCriteria(Product.class) .add(Expression.like("A%")) .list();
============================================================================session.createCriteria(Product.class) .add(Expression.in("color",selectedColors)) .list();
============================================================================In addition, the API provides convenient operators which :eqProperty, ltProperty, etc?session.createCriteria(Sale.class) .eqProperty("saleDate","releaseDate") .list();
============================================================================
No comments:
Post a Comment