Hibernate Criteria JOIN API allows users to perform join operation.
Suppose you have to perform a operation like
SELECT S.*, C.* FROM STUDENT S, CONTACT C WHERE S.ROLL_NO=C.ID;
Then you can write this statement using Criteria in a very simple way
Criteria criteria = session.createCriteria(Student.class); criteria.setFetchMode("Contact", FetchMode.JOIN); List list = criteria.list();
The above statement is very simple, that you have to only call the setFetchMode(ClassName, Type of operation);
In the setFetchMode() method first provide the name of the class, and type of operation on the class.
Suppose you have to apply restriction on join operation such as
SELECT C.*, S.* FROM CONTACT C, STUDENT S WHERE C.ID=S.ROLL_NO AND S.ROLL_NO=?5?;
Then you can write the above statement in criteria as
Criteria criteria = session.createCriteria(Student.class); criteria.setFetchMode("Contact", FetchMode.JOIN).add( Restrictions.eq("id", 2)); List list = criteria.list();
The eq() method of restriction class compares the result with id and returns.
Read More about the restriction on Criteria.
A Simple class of criteria join is given below
SelectCriteria.java
package net.roseindia.main; import java.util.Iterator; import java.util.List; import net.roseindia.bean.Contact; import net.roseindia.util.HibernateUtil; import org.hibernate.Criteria; import org.hibernate.FetchMode; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; public class SelectCriteria { @SuppressWarnings("unchecked") public static void main(String[] args) { Session session = HibernateUtil.getSessionFactory().openSession(); Object object; try { // Creating a Criteria instance Criteria criteria = session.createCriteria(Contact.class); criteria.setFetchMode("Student", FetchMode.JOIN).add( Restrictions.eq("id", 1)); List list = criteria.list(); Iterator itr = list.iterator(); System.out.println("\n"); System.out.println("Student Details :- \n"); if (list.size() == 0) { System.out.println("No Result Found !"); } while (itr.hasNext()) { object = (Object) itr.next(); System.out.printf("\t"); System.out.println("First Name : " + ((Contact) object).getFirstName()); } } catch (HibernateException e) { e.printStackTrace(); } finally { session.close(); } } }
select this_.ID as ID1_0_,
this_.first_name as first2_1_0_, this_.last_name as last3_1_0_ from
contact this_ where this_.ID=? Student Details :- First Name : John MacSmith |
Advertisements
Ads
Ads