2009-11-30 2 views
0

나는 후보자와 직책 사이에 많은 관계가있다. 가져온 위치 목록을 다음과 같이 제한하려고합니다.NHibernate 다 대다 기준

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

귀하의 요구 사항을 명확히 할 수 있습니까? 특정 후보를 반환하고 후보자의 위치 컬렉션에 positionID가 지정된 위치 만 포함하도록 하시겠습니까?

그렇다면 그렇게 생각하지 않습니다. 지정한 ID가있는 위치와 연관된 지정된 ID로 후보를 검색하도록 지정합니다. 응시자가로드되면 느린 속도로 또는 다른 방식으로로드됩니다. 모두의 해당 지위가 부여됩니다. 응시자는 항상 관련된 모든 객체에 대한 액세스 권한을 항상 가지고 있어야하므로 올바른 동작입니다.

당신이해야 할 일은 후보를로드 한 다음 필요한 ID가있는 위치에 대한 위치 컬렉션을 검색하는 것입니다.