package roseindia.tutorial.hibernate;

import org.hibernate.*;
import org.hibernate.criterion.*;
import org.hibernate.cfg.*;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * @author Vinod Kumar
 * 
 * http://www.roseindia.net Hibernate Criteria Query Example
 *  
 */public class HibernateCriteriaQueryBetweenDate {
  public static void main(String[] args) {
    Session session = null;
    try {
      // This step will read hibernate.cfg.xml and prepare hibernate for
      // use
      SessionFactory sessionFactory = new Configuration().configure()
          .buildSessionFactory();
      session = sessionFactory.openSession();
      //Criteria Query Example
      Criteria crit = session.createCriteria(Insurance.class);
      DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
      Date startDate = (Date)format.parse("2005-01-01 00:00:00");
      Date endDate = (Date)format.parse("2005-03-03 00:00:00");
      crit.add(Expression.between("investementDate", new Date(startDate.getTime()), new Date(endDate.getTime()))); //Between date condition
      crit.setMaxResults(5); //Restricts the max rows to 5

      List insurances = crit.list();
      for(Iterator it = insurances.iterator();it.hasNext();){
        Insurance insurance = (Insurance) it.next();
        System.out.println("ID: " + insurance.getLngInsuranceId());
        System.out.println("Name: " + insurance.getInsuranceName());
        System.out.println("Amount: " + insurance.getInvestementAmount());
        System.out.println("Date: " + insurance.getInvestementDate());
        
      }
      session.close();
    } catch (Exception e) {
      System.out.println(e.getMessage());
    } finally {
    }    
  }
}