我想从2个不同的表中检索一些数据。它们被命名为“A”和“B”。 还有另一个名为'C'的表。
A和B都引用'C',但'C'既没有引用也没有引用B.
我的SQL命令是这样的:
select
A.x,
A.y,
B.z
from
A
LEFT OUTER JOIN C ON C.i = A.i
LEFT OUTER JOIN B ON B.i = C.i
问题是:我在表A中需要一些数据,在表B上有一些数据。 我需要从表A中检索所有数据,其中表A中的属性等于表B的属性,因此表B中的一些数据。 这很简单,非常简单的HQl命令(使用LINQ更容易):
select a.x, a.y, b.z
from A as a, B as b
where a.x = b.x
但问题是:当a.x为NULL时,我还需要从A中检索数据。我当然会从b.x
获得一个空值我尝试在LINQ上使用DefaultIfEmpty(),但由于我在实体上使用session.Query(),因此在NH 3中尚未实现DefaultIfEmpty。
我如何在HQL中编写它?
答案 0 :(得分:1)
您不能在HQL中使用左连接来表示未映射的关系。
您可以使用SQLQuery。