Использование DetachedCriteria в точности совпадает с критерием, за исключением того, что вы можете выполнить первоначальное создание и настройку запроса, не имея доступа к сеансу. Когда приходит время выполнить ваш запрос, вы должны преобразовать его в исполняемый запрос с getExecutableCriteria(session)
.
Это полезно, если вы создаете сложные запросы, возможно, с помощью многоэтапного процесса, потому что вам не нужен доступ к сеансу везде. Вам нужно только сеанс на последнем этапе, когда вы выполняете запрос.
Под капотом DetachedCriteria используется CriteriaImpl, который является тем же классом, который вы получаете при вызове session.createCriteria()
.