帮我翻译成正确的NHibernate这个...如何用NHibernate查询Oracle数据库?
我有2个表Oracle数据库:
Employees:
Id (unique id)
FirstName (string)
LastName (string)
Location (string)
Locations:
Name (string)
Address (string)
正如你可以看到员工表中有一个唯一的ID,但位置表没有无论如何。名称字段是一个常规字段,不是唯一的。
在Oracle SQL,我可以运行以下查询:
SELECT *
FROM Employees e
LEFT OUTER JOIN Locations l
ON e.Location = l.Name
WHERE e.Id = 42
其中雇员42的位置,具有在位置表2点的行,所以该查询返回2行,一个用于发现对于每个位置员工42.
那么,我想不出如何将其转换成NHibernate映射+查询(我使用流利NHibernate)。我倾向于认为我应该将Employees.Location映射为Locations.Name的引用,所以当运行我的HQL查询时,它应该返回2个对象,但NHibernate不会让我从Reference中检索列表。所以我尝试了HasMany,但它也不起作用,因为NHibernate希望位置中的字段指向员工,这很有意义。
我的HQL查询看起来是这样的:
select e
from Employees e
left join e.Locations l
where e.SGId like :sgId
为什么我在常规的SQL,而不是在NHibernate的做到这一点?
谢谢。
这不会工作,因为你缺少.PropertyRef(),事实证明。我用这个新元素添加了一个新的解决方案。谢谢您的帮助。 – md1337
是的,你的权利。 :)更新后,供将来参考。 +1 –