ниже приведен фрагмент кода в моем устаревшем проекте
DetachedCriteria subCriteria = DetachedCriteria.forClass(Employee.class);
subCriteria.setProjection(Projections.distinct(Property.forName ("department.departmentId"))).add(Property.forName("departmentName").eq(departmentName));
Criteria criteria = getCriteria();
Property.forName("departmentId").in(subCriteria)
У меня вопрос: у нас есть следующий метод in (Подвыбор DetachedCriteria) в API свойств, почему не метод in (Подвыбор Criteria)? Я уверен, что за этим должна быть какая-то причина, но как-то я этого не понял? Причина, по которой я говорю это, заключается в том, что у нас должна быть возможность выбора другого критерия в качестве подвыбора вместо DetachedCriteria.
РЕДАКТИРОВАТЬ: - Ниже описано, как я ожидаю создания подкритериев, потому что у меня есть сеанс, доступный на данный момент, поэтому у меня нет необходимости использовать DetachedCriteria
Criteria subCriteria1 =session.createCriteria(Employee.class);
subCriteria1.setProjection(Projections.distinct(Property.forName("department.departmentId"))).add(Property.forName("departmentName").eq(departmentName));
Criteria criteria = getCriteria();
Property.forName("departmentId").in(subCriteria1)
Но subCriteria1 здесь недопустим, поскольку в качестве аргумента метода ожидается только DetachedCriteria. Почему бы не использовать аргумент Критерии вместе с DetachedCriteria?