使用NHibernate QueryOver
,我想使用两个列连接两个表,这两个列未在映射中定义为关系。
E.g。这不是我的确切场景,但这可以解释
表:
Employee(Id, Name, DepartmentId, SomeCode,Address)
Department (Id, Name, ,Code)
选择
SELECT *
FROM EMPLOYEE E
JOIN DEPARTMENT D
ON D.Code = E.SomeCode
有人可以告诉我如何使用NHibernate QueryOver
进行此查询。请注意,Employee
中的“SomeCode”和Department
中的“代码”未定义为关系。 DepartmentId是外键,我可以使用JoinAlias
加入它们,但我想以一种不同的方式加入它们。
答案 0 :(得分:1)
有类似的问题,例如
答案是:
QueryOver
/ Criteria
参见文档:
可能会出现多个班级,导致产生笛卡尔积或“#34; cross"加入。
from Formula, Parameter
from Formula as form, Parameter as param
所以在你的情况下使用HQL,我们可以这样做:
SELECT ...
FROM EMPLOYEE E, DEPARTMENT D
WHERE D.Code = E.SomeCode
...
但我建议:在代码中创建该映射。简单介绍many-to-one
关系。它将被懒惰地加载(仅在使用时)并且很好地满足我们的需求 - 在QueryOver
中用作Join
的关系
如果存在这样的关系,如果在业务对象域中存在这种关系,我们就不应该害怕使用它。我们可以通过安全等隐藏它......