2012-02-17 5 views
2

Я провела много исследований и, наконец, решила спросить об этом.Hibernate Пример Критерии запроса: фильтрация по дочерним свойствам

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

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, и я хочу, чтобы получить все сотрудников с данным департаментом.

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

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

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

Есть комментарии?

ответ

3

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

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

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

+0

Вы правы, это была ошибка при написании вопроса. Я обновил его и отметил, что он ответил. Я изменю код, чтобы добавить критерии для фильтрации дочерними объектами. Спасибо. –

Смежные вопросы