加入NHibernate Criteria查询中的多个字段

use*_*944 1 nhibernate hibernate criteria hibernate-criteria

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

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

where dept.deptId = emp.DeptId and dept.deptName = emp.empTrainingName
Run Code Online (Sandbox Code Playgroud)

我试过这个:

Criteria criteria = session.createCriteria(Dept.class).createAlias("empMap","id");
Run Code Online (Sandbox Code Playgroud)

使用它,第一个条件即dept.deptId = emp.DeptId执行.但我不知道如何比较dept.deptNameemp.empTrainingName.

如何使用NHibernate中的Criteria API执行此操作?

JB *_*zet 9

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

您也可以使用with子句,这在左连接时是必需的:

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

旁注:你的名字选择很糟糕.而不是Dept.deptId,为什么不使用Department.id?而不是Emp.empTrainingName,为什么不选择Employee.trainingName