DetachedCriteria 是离线的,创建时无需 Session,DetachedCriteria 提供了 2 个静态方法 forClass(Class) 或 forEntityName(Name) 进行DetachedCriteria 实例的创建。 Spring 的框架提供了getHibernateTemplate ().findByCriteria(detachedCriteria) 方法可以很方便地根据DetachedCriteria 来返回查询结果。
例如:
public <T> List<T> findByCriteria(Class clazz, Criterion[] criterion) { DetachedCriteria detachedCrit = DetachedCriteria.forClass(clazz); for (Criterion c : criterion) { detachedCrit.add(c); } return getHibernateTemplate().findByCriteria(detachedCrit); }