2
Person 엔티티가 있습니다. 모든 사람에게는 국가가 있으므로 그 나라에 사람이있는 모든 국가를 선택하고 싶습니다. 이 조건 쿼리는 모든 고유 한 CountryID를 반환합니다.NHibernate Criteria Query - Join 된 Entity와 Distinct를 선택하십시오.
ID가 아닌 국가 엔티티에 가입하고 가져 오려면 어떻게 변경합니까?
Person 엔티티가 있습니다. 모든 사람에게는 국가가 있으므로 그 나라에 사람이있는 모든 국가를 선택하고 싶습니다. 이 조건 쿼리는 모든 고유 한 CountryID를 반환합니다.NHibernate Criteria Query - Join 된 Entity와 Distinct를 선택하십시오.
ID가 아닌 국가 엔티티에 가입하고 가져 오려면 어떻게 변경합니까?
쉬운 방법은 하위 쿼리를 사용하는 것입니다. 즉, 국가 ID가 내부 쿼리와 일치하는 외부 쿼리에서 전체 국가를 선택할 수 있습니다.
Subqueries.PropertyIn(
"Country",
innerDetachedCriteriaWhichFindsCountriesWithPeopleAndProjectsCountryId)
이것은 작동하지만 detached Criteria가 없으므로 ICriteria를 DetachedCriteria로 변환 할 필요가 있거나 사용할 수 없습니다. 이 생성자는 유망 해 보입니다 만, 나는 CriteriaImpl DetachedCriteria (NHibernate.Impl.CriteriaImpl, NHibernate.ICriteria) – reach4thelasers
에 대해 무엇을 전달해야할지 전혀 모릅니다. 실제로는 다른 방향으로 갈 수 있습니다. DetachedCriteria 인스턴스 (DetachedCriteria.Off()) 만 사용하여 조건을 작성한 다음 GetExecutableCriteria (세션)를 사용하여이를 실제 실행 가능 조건으로 변환하십시오. –
이 방법은 효과적 이었지만, 모든 ICriteria 객체를 DetachedCriteria 객체로 변경하고 필요시 세션에 첨부해야했습니다. 다른 방법으로는 중복을 도입했을 것이고, 버그가 나는 전에 한 번만 찌르거나 다른 것을 업데이트하지 않았을 것입니다. 누군가가 DetachedCriteria가 아닌 ICriteria로 어떻게하는지 알고 있다면 알려주세요. – reach4thelasers