1

私はDeptテーブルとテーブルを持っていEmpます。

where句が次のようになるように、これら 2 つのテーブルを結合する必要があります。

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

私はこれを試しました:

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

これを使用して、最初の where 条件 iedept.deptId = emp.DeptIdが実行されます。しかし、 と比較する方法がわかりませdept.deptNameemp.empTrainingName

NHibernate の Criteria API を使用してこれを行うにはどうすればよいですか?

4

1 に答える 1

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

with句を使用することもできます。これは、左結合の場合に必要になります。

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

于 2012-06-10T09:48:42.090 に答える