我在候选人和职位之间有很多关系。我试图限制提取的位置列表如下
ICriteria criteria = this.GetSession().CreateCriteria(typeof(Candidate), "c");
criteria.CreateAlias("c.Positions", "plist",NHibernate.SqlCommand.JoinType.InnerJoin);
criteria.CreateAlias("plist.items", "p",NHibernate.SqlCommand.JoinType.InnerJoin);
criteria.Add(Expression.And
(
Expression.Eq("c.CandidateID", candidateID),
Expression.Eq("p.PositionID", positionID)
));
但是,所有职位都在列表中提取。可能是什么原因?
答案 0 :(得分:0)
我可以澄清您的要求吗?您是说要返回特定候选人,并且候选人的职位集合仅包含具有指定positionID的职位吗?
如果是这样,我认为它不会那样。您指定要检索具有指定ID的候选者,该ID与具有指定ID的职位相关联。加载候选人后,它将加载(懒惰或其他)该候选人相关职位的 所有 。这是正确的行为,因为候选人应该始终可以访问所有相关对象。
我认为您需要做的是加载候选人,然后在职位集合中搜索您需要的ID的职位。