hibernate离线查询和子查询,条件查询的离线查询由DetachedCriteria来代表,DetachedCriteria类使你在一个session范围之外创建一个查询,并且可以使用任意的Session来执行它。
DetachedCriteria还可代表子查询,当我们把DetachedCriteria传入Criteria中作为查询条件时,DetachedCriteria就变成了子查询。以下代码片段所示:
//定义一个离线查询
DetachedCriteria query = DetachedCriteria.forClass(Student.class)
//打开Session和事务(省略)
//执行离线查询
List l = query.getExecutableCriteria(session).list();
//执行子查询
List l = session.createCriteria(Student.class)
程序使用Session的getExecutableCriteria()方法来执行DetachedCriteria对象,则它被当成离线查询使用;如果程序使用Property的系列方法来操作DetachedCriteria对象,则它被当成子查询使用。