
How to use AND operator in hibernate Detached criteria query?

You can use AND operator in hibernate detachedCriteria through Restrictions.conjunction(). Detached Criteria query is a facility provide by Hibernate to write criteria queries in ?detached mode?, where hibernate session is not available. You can instantiate this class anywhere.
Example :
package net.roseindia.main;
import java.util.*;
import net.roseindia.table.Employee;
import net.roseindia.util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Property;
import org.hibernate.criterion.Restrictions;
public class DetachedCriteriaAND {
public static void main(String[] args) {
DetachedCriteria detachedCriteria = DetachedCriteria
.forClass(Employee.class);
detachedCriteria.add(Restrictions.conjunction()).add(
Property.forName("id").eq(4)).add(
Property.forName("name").like("R%"));
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
List<Employee> employeeList = new ArrayList<Employee>();
employeeList = detachedCriteria.getExecutableCriteria(session).list();
Iterator it = employeeList.iterator();
while (it.hasNext()) {
Employee employee = (Employee) it.next();
System.out.println("Name : " + employee.getName());
System.out.println("Salary : " + employee.getSalary());
System.out.println("Date of Join : " + employee.getDateOfJoin());
}
session.close();
}
}
Output :
Hibernate: select this_.emp_id as emp1_0_0_, this_.date_of_join as date2_0_0_, this_.name as name0_0_, this_.salary as salary0_0_ from employee this_ where 1=1 and this_.emp_id=? and this_.name like ? Name : Roxi Salary : 220000 Date of Join : 2001-02-03 00:00:00.0
Description: In this example we are checking two conditions (id must be equal to 4 and name must start with R character) combinedly. Restrictions.conjunction() is used here for AND operator. Restrictions.conjunction() combinedly check both conditions and return true if both conditions are true
If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.
Ask your questions, our development team will try to give answers to your questions.