示例代码如下:

  1. package com.hb3.pack_01;

  2. import java.util.Iterator;
  3. import java.util.List;

  4. import org.hibernate.Criteria;
  5. import org.hibernate.Session;
  6. import org.hibernate.SessionFactory;
  7. import org.hibernate.cfg.Configuration;
  8. import org.hibernate.criterion.DetachedCriteria;
  9. import org.hibernate.criterion.Restrictions;

  10. import com.hb3.pack_01.model.User;

  11. public class BusinessService {

  12.     public static void main(String[] args) {
  13.         
  14.         Configuration config = new Configuration().configure();
  15.         SessionFactory sessionFactory = config.buildSessionFactory();      
  16.         
  17.         
  18.         DetachedCriteria detchedCriteria = DetachedCriteria.forClass(User.class);
  19.         detchedCriteria.add(Restrictions.ge("age",new Integer(20)));
  20.         
  21.         Session session = sessionFactory.openSession();
  22.         Criteria criteria = detchedCriteria.getExecutableCriteria(session); 
  23.         
  24.         List<?> users = criteria.list();
  25.         Iterator<?> iterator =  users.iterator();
  26.         System.out.println("id \t name/age");
  27.         while(iterator.hasNext()) {
  28.             User ur = (User) iterator.next();
  29.             System.out.println(ur.getId() + " \t " + ur.getName() + "/" + ur.getAge());    
  30.         }
  31.         
  32.         session.close();
  33.         sessionFactory.close();
  34.     }
  35. }

Criteria和Session绑定的,但DetachedCriteria则不同。

这是在Hibernate 3中新增的类,目的是为了能够重复使用Criteria。其使用方法请参看前面对Criteria的介绍:



ExtJS教程- Hibernate教程-Struts2 教程-Lucene教程