1

我有一张Dept桌子和一张Emp桌子。

我需要以这样的方式加入这两个表,使where子句看起来像这样:

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

我试过这个:

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

使用它,执行第一个 where 条件 ie dept.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 回答