Запрос Критерии примера Hibernate: фильтрация по дочерним свойствам - PullRequest
2 голосов
/ 17 февраля 2012

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

У меня есть два класса, подобных этому:

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 Ответ

3 голосов
/ 17 февраля 2012

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

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

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

...