我有一个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
进行比较。
如何使用NHibernate中的Criteria API执行此操作?
答案 0 :(得分: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
?