Объединение нескольких полей в запросе NHibernate Criteria

у меня естьDept стол иEmp Таблица.

Мне нужно объединить эти две таблицы таким образом, чтобыwhere Предложение выглядит примерно так:

where dept.deptId = emp.DeptId and dept.deptName = emp.empTrainingName

Я попробовал это:

Criteria criteria = session.createCriteria(Dept.class).createAlias("empMap","id");

Используя это, первое, где условие, т.е.dept.deptId = emp.DeptId выполняется. Но я не уверен, как сравнитьdept.deptName сemp.empTrainingName.

Как мне сделать это, используя Criteria API в NHibernate?

Ответы на вопрос(1)

Criteria criteria = session.createCriteria(Dept.class, "department")
                           .createAlias("empMap", "employee")
                           .add(Restrictions.eqProperty("department.deptName", 
                                                        "employee.empTrainingName"));

которое будет необходимо в случае левого соединения:

Criteria criteria = 
    session.createCriteria(Dept.class, "department")
           .createAlias("empMap", 
                        "employee", 
                        Criteria.LEFT_JOIN,
                        Restrictions.eqProperty("department.deptName", 
                                                "employee.empTrainingName"));

Примечание: ваш выбор имен ужасен. ВместоDept.deptIdПочему бы не использоватьDepartment.id? ВместоEmp.empTrainingNameпочему бы не выбратьEmployee.trainingName?

 10 июн. 2012 г., 14:30
Смотрите редактирование моего ответа.
 user18294410 июн. 2012 г., 11:58
Спасибо за быстрый ответ. Да, они ужасны, я думал, как объяснить свою проблему, и у меня не было настоящего имени таблицы, поэтому я выдал что-то бессмысленное. Кстати, таким образом, я выполняю внутреннее соединение между таблицами. Если я хочу выполнить внешнее соединение, то как это сделать с помощью Hibernate? Можете ли вы опубликовать пример для внешнего соединения, с которым я могу поиграть?

Ваш ответ на вопрос