'Отсоединено от объекта сеанса'
Отдельные критерии могут использоваться в двух сценариях:
Запрос критериев построения без объекта сеанса:
Сеанс требуется только при выполнении запроса / отправке запроса в базу данных, но не при его создании.
Ex:
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);
detachedCriteria.add(Restrictions.eq("DEPTID", 1));
ProjectionList projectionList = Projections.projectionList();
projectionList.add(Projections.property("DEPTID"));
detachedCriteria.setProjection(projectionList);
//Add more
.............................
В приведенном выше коде вы обнаружите необходимость наличия объекта сеанса для построения запроса такого критерия? абсолютно НЕТ.
Построение одного и того же критерия запроса несколько раз:
Создайте его один раз, независимо от объекта сеанса, и его можно использовать всегда и везде.
Наконец, когда объект сеанса доступен, используйте приведенный выше запрос с сеансом следующим образом:
detachedCriteria.getExecutableCriteria(session).list();