NHibernate 急切负载

Posted

技术标签:

【中文标题】NHibernate 急切负载【英文标题】:NHibernate Eager Load 【发布时间】:2012-10-18 10:25:30 【问题描述】:

我有一个具有以下 HQL 的应用程序:

select distinct p from Position p
inner join fetch p.RequiredSkills rs
inner join fetch rs.Skill s
where s.Id in (:skills)

我已经搜索了该职位具有搜索技能的职位。

目前,hql 可以使用该技能返回位置,但它只获取过滤后的技能。

我现在想归还与该职位相关的所有技能。

我有什么办法吗?

干杯,

詹姆斯

【问题讨论】:

【参考方案1】:

您可以尝试使用子查询:

select distinct p from Position p 
inner join fetch p.RequiredSkills rs 
inner join fetch rs.Skill s where p.Id in 
( select distinct pi.Id from Position pi
  inner join pi.RequiredSkills rsi
  inner join rsi.Skill si
  where si.Id in (:skills) )

【讨论】:

哇...我不敢相信我没想到! - 非常感谢!

以上是关于NHibernate 急切负载的主要内容,如果未能解决你的问题,请参考以下文章

Nhibernate - 分页和急切加载实体

在 NHibernate 中强制进行急切的选择

Fluent NHibernate:在映射中急切加载多个集合

在 NHibernate 3.0 Linq 中急切加载多个兄弟姐妹和孙辈(堂兄弟?)的良好行为

控制 NHibernate 实体 Eagerloading

nHibernate 不加载第三级属性(不可刷新缓存)