在使用公共属性的两个实体上创建连接但是它们没有映射在一起时会遇到问题。
假设您有一个实体文章,其中包含一个属性FamilyCode和一个包含属性Code和Label的实体Family。
在我的映射中,文章没有引用Family,我也不想改变它(以保持与其他内部和遗留方法的兼容性)。
所以,我无法在Nhibernate中翻译以下查询:
SELECT f.Code, f.Label
FROM Article a
INNER JOIN Family f ON a.FamilyCode = f.Code
WHERE f.Label LIKE 'p%'
我无法使用JoinQuery,因为我无法注入QueryOver,如果可以使用WithSubquery,我就不会知道。
我尝试了Future QueryOver和QueryOver,然后在内存中执行Join(在每个.List()之后)但是我有太多的文章行,所以需要很长时间。
你有想法吗?
感谢。
答案 0 :(得分:2)
我们可以使用HQL - 但仅 HQL。
可能会出现多个班级,导致产生笛卡尔积或“#34; cross"加入。
from Formula, Parameter
from Formula as form, Parameter as param
这就是使用HQL的方式
SELECT f.Code, f.Label
FROM Article a,
Family f
WHERE a.FamilyCode = f.Code
AND f.Label LIKE 'p%'
同时检查此9.3.2. The IQuery interface,也许还有Q & A