Запрос критерия примера гибернации: фильтрация по дочерним свойствам

Я провел много исследований и, наконец, решил спросить об этом.

У меня есть два класса, как это:

Employee
-emp_id
-name
-dep_id

Department
-dep_id
-name

Я использую этот код для запроса по примеру:

List<Employee> find = null;
Example example = Example.create(criteria)
        .excludeZeroes()
        .ignoreCase();
find = hibernateTemplate.getSessionFactory().getCurrentSession().createCriteria(Employee.class)
        .add(example)
        .list() ;
return find;

Объект критерия является экземпляром Employee, и я хочу получить всех сотрудников с заданным названием отдела.

Проблема заключается в том, что когда я выполняю код, я получаю сотрудников из всех отделов, даже когда критерии имеют свойство, установленное следующим образом: crit.department.name = "IT"

Он работает правильно, когда в примере установлены родительские свойства, но не фильтрует дочерние свойства.

Из того, что я вижу, я должен создать псевдонимы для присоединения дочерних свойств, но этот тип не соответствует цели критериев примера.

Есть комментарии по этому поводу?

1 ответ

Решение

Критерий создан с createCriteria(Department.class) не вернет сотрудников. Он вернет департаменты.

И пример запроса используется для извлечения сущностей, которые совпадают с примером, который вы передаете в качестве аргумента. Но, как сказано в документации:

Свойства версии, идентификаторы и ассоциации игнорируются

Другие вопросы по тегам