Запрос критерия примера гибернации: фильтрация по дочерним свойствам
Я провел много исследований и, наконец, решил спросить об этом.
У меня есть два класса, как это:
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)
не вернет сотрудников. Он вернет департаменты.
И пример запроса используется для извлечения сущностей, которые совпадают с примером, который вы передаете в качестве аргумента. Но, как сказано в документации:
Свойства версии, идентификаторы и ассоциации игнорируются