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);
- }