nhibernate 하위 컬렉션을 필터링 할 수 있습니까?

Aggietech

엔터티를 가져오고 하위 컬렉션을 열망하는 데 잘 작동하는 다음 nHibernate 쿼리가 있습니다.

var contactInfo = session.QueryOver<PeopleInfo>()
                         .Fetch(x => x.Addresses).Eager
                         .Fetch(x => x.EmailAddresses).Eager
                         .Fetch(x => x.PhoneNumbers).Eager
                         .Where(x => x.Id == contactInfoId)
                         .SingleOrDefault();

이제 주소에 Active라는 필드가 있다고 가정 해 봅시다. 한 번의 호출로 모든 활성 주소를 반환하는 방법이 있습니까?

나는 사실 후에 그것을 걸러 낼 수있다. 나는 단지 질의를 통해 그것을 할 수있는 방법이 있는지 궁금하다.

감사!

앤드류 휘태커

예, 할 수 있지만 QueryOver 쿼리에 일부 조인을 포함해야합니다.

내부적으로 .Fetch당신이 간절히 가져 오는 관련 컬렉션이없는 사람들을 제외하지 않고 LEFT JOIN전체 목록을 다시 가져 오기 위해 많은 s를 생성합니다 PeopleInfo.

왼쪽 조인을 직접 수행하여 조인 수행 방식을 재정의 할 수 있습니다.

예를 들어 모든 PeopleInfo주소 를 가져 오려면 Active다음을 수행 할 수 있습니다.

Address addressAlias;

var addressRestriction = Restrictions.Where(() => address.Active);

session.QueryOver<PeopleInfo>()
    .Left.JoinQueryOver(
        pi => pi.Addresses, () => addressAlias, addressRestriction)
    .Fetch(x => x.Addresses).Eager
    .Fetch(x => x.EmailAddresses).Eager
    .Fetch(x => x.PhoneNumbers).Eager
    .Where(x => x.Id == contactInfoId)
    .SingleOrDefault();

지금, 당신에 있기 때문에 JOIN에 보내고 Address전체 밖으로 선택 PeopleInfo엔티티를 실제로 사용할 필요가 없습니다 .Fetch의 모든 철수하는 Address필드.

session.QueryOver<PeopleInfo>()
    .Left.JoinQueryOver(
        x => x.Addresses, () => addressAlias, addressRestriction)
    .Fetch(x => x.EmailAddresses).Eager
    .Fetch(x => x.PhoneNumbers).Eager
    .Where(x => x.Id == contactInfoId)
    .SingleOrDefault();

Address열이 포함되어 SELECT당신이에 가입했기 때문에 절 Address전체 밖으로 선택하는 PeopleInfo클래스를.

둘 다 동일한 SQL을 생성하지만 프로파일 러에서 확인해야합니다. 다음과 같이 보일 것입니다.

SELECT this_.*         -- All PeopleInfo columns
       addressali1_.*, -- All Address columns 
       emailaddre4_.*  -- All email address columns
FROM   PeopleInfo this_ 
       LEFT OUTER JOIN address addressali1_ 
                    ON this_.id = addressali1_.personid 
                       AND ( addressali1_.active = 1) 
       LEFT OUTER JOIN emailaddress emailaddre4_ 
                    ON this_.id = emailaddre4_.personid 
WHERE  this_.id = <your id>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

datetime 속성을 다른 속성과 timespan 값을 더한 값과 비교하는 자식 컬렉션을 어떻게 필터링 할 수 있습니까?

분류에서Dev

Elasticsearch에서 하위 배열을 필터링 할 수 있습니까?

분류에서Dev

Nhibernate QueryOver의 조인 부분에 하위 선택을 할 수 있습니까?

분류에서Dev

.each ()를 사용하지 않고이 컬렉션을 렌더링 할 수 있습니까?

분류에서Dev

Cloud Firestore의 서브 컬렉션에서 문서 필드 값을 쿼리하고 검색 할 수 있습니까?

분류에서Dev

어떻게 직접 값을 기반으로 컬렉션을 필터링 할 수 있습니다?

분류에서Dev

Mongoose를 사용하여 MongoDB 데이터베이스의 컬렉션을 쿼리 할 수 있습니까?

분류에서Dev

Observable을 구독하여 어떻게 ID를 필터링 할 수 있습니까?

분류에서Dev

카드 목록을 필터링하기 위해 flutter의 TabBar를 사용할 수 있습니까?

분류에서Dev

Jekyll : 컬렉션과 데이터 파일을 결합 할 수 있습니까?

분류에서Dev

하위 배열의 다른 컬렉션에있는 속성을 어떻게 호출 할 수 있습니까?

분류에서Dev

누군가가 SCJP 시험을 위해 내 컬렉션을 확인하도록 할 수 있습니까?

분류에서Dev

Laravel 패키지는 어떻게 모든 요청을 필터링하고 필요한 경우 리디렉션 할 수 있습니까?

분류에서Dev

누군가`std :: views :: reverse`를 사용할 때 함수를 필터링하기위한 불필요한 호출을 설명 할 수 있습니까?

분류에서Dev

날짜 값을 어떻게 필터링 할 수 있습니까?

분류에서Dev

Solr에서 쌍 목록을 필터링 할 수 있습니까?

분류에서Dev

Firestore 하위 컬렉션 문서 필드의 값을 어떻게 늘릴 수 있습니까?

분류에서Dev

경로 목록이있는 경우 이전에 언급 한 경로의 하위 디렉터리를 어떻게 필터링 할 수 있습니까?

분류에서Dev

경로 목록이있는 경우 이전에 언급 한 경로의 하위 디렉터리를 어떻게 필터링 할 수 있습니까?

분류에서Dev

경로 목록이있는 경우 이전에 언급 한 경로의 하위 디렉터리를 어떻게 필터링 할 수 있습니까?

분류에서Dev

컬렉션을 초기화 할 수 없음-Fluent Nhibernate

분류에서Dev

특정 일수 내에 Eloquent 컬렉션을 필터링하는 방법은 무엇입니까?

분류에서Dev

표준 이름을 사용하여 컴퓨터를 필터링 할 수 있습니까?

분류에서Dev

아직 존재하지 않는 상위 문서에 대해 하위 컬렉션 엔터티를 업 서트 할 수 있습니까?

분류에서Dev

자식 컬렉션 수를 기반으로하는 Nhibernate queryover 필터

분류에서Dev

Future를 반환하는 함수로 목록을 필터링 할 수 있습니까?

분류에서Dev

드롭 다운 필드에서 선택한 항목을 기반으로 하위 표를 필터링 할 수 있습니까?

분류에서Dev

JAXB 및 Kotlin을 사용하여 xml 개체 컬렉션을 마샬링 할 수 없습니다.

분류에서Dev

관련 컬렉션의 속성으로 필터링 된 관련 컬렉션 수를 기준으로 컬렉션 (예 : 상위 20 개)을 정렬하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    datetime 속성을 다른 속성과 timespan 값을 더한 값과 비교하는 자식 컬렉션을 어떻게 필터링 할 수 있습니까?

  2. 2

    Elasticsearch에서 하위 배열을 필터링 할 수 있습니까?

  3. 3

    Nhibernate QueryOver의 조인 부분에 하위 선택을 할 수 있습니까?

  4. 4

    .each ()를 사용하지 않고이 컬렉션을 렌더링 할 수 있습니까?

  5. 5

    Cloud Firestore의 서브 컬렉션에서 문서 필드 값을 쿼리하고 검색 할 수 있습니까?

  6. 6

    어떻게 직접 값을 기반으로 컬렉션을 필터링 할 수 있습니다?

  7. 7

    Mongoose를 사용하여 MongoDB 데이터베이스의 컬렉션을 쿼리 할 수 있습니까?

  8. 8

    Observable을 구독하여 어떻게 ID를 필터링 할 수 있습니까?

  9. 9

    카드 목록을 필터링하기 위해 flutter의 TabBar를 사용할 수 있습니까?

  10. 10

    Jekyll : 컬렉션과 데이터 파일을 결합 할 수 있습니까?

  11. 11

    하위 배열의 다른 컬렉션에있는 속성을 어떻게 호출 할 수 있습니까?

  12. 12

    누군가가 SCJP 시험을 위해 내 컬렉션을 확인하도록 할 수 있습니까?

  13. 13

    Laravel 패키지는 어떻게 모든 요청을 필터링하고 필요한 경우 리디렉션 할 수 있습니까?

  14. 14

    누군가`std :: views :: reverse`를 사용할 때 함수를 필터링하기위한 불필요한 호출을 설명 할 수 있습니까?

  15. 15

    날짜 값을 어떻게 필터링 할 수 있습니까?

  16. 16

    Solr에서 쌍 목록을 필터링 할 수 있습니까?

  17. 17

    Firestore 하위 컬렉션 문서 필드의 값을 어떻게 늘릴 수 있습니까?

  18. 18

    경로 목록이있는 경우 이전에 언급 한 경로의 하위 디렉터리를 어떻게 필터링 할 수 있습니까?

  19. 19

    경로 목록이있는 경우 이전에 언급 한 경로의 하위 디렉터리를 어떻게 필터링 할 수 있습니까?

  20. 20

    경로 목록이있는 경우 이전에 언급 한 경로의 하위 디렉터리를 어떻게 필터링 할 수 있습니까?

  21. 21

    컬렉션을 초기화 할 수 없음-Fluent Nhibernate

  22. 22

    특정 일수 내에 Eloquent 컬렉션을 필터링하는 방법은 무엇입니까?

  23. 23

    표준 이름을 사용하여 컴퓨터를 필터링 할 수 있습니까?

  24. 24

    아직 존재하지 않는 상위 문서에 대해 하위 컬렉션 엔터티를 업 서트 할 수 있습니까?

  25. 25

    자식 컬렉션 수를 기반으로하는 Nhibernate queryover 필터

  26. 26

    Future를 반환하는 함수로 목록을 필터링 할 수 있습니까?

  27. 27

    드롭 다운 필드에서 선택한 항목을 기반으로 하위 표를 필터링 할 수 있습니까?

  28. 28

    JAXB 및 Kotlin을 사용하여 xml 개체 컬렉션을 마샬링 할 수 없습니다.

  29. 29

    관련 컬렉션의 속성으로 필터링 된 관련 컬렉션 수를 기준으로 컬렉션 (예 : 상위 20 개)을 정렬하는 방법은 무엇입니까?

뜨겁다태그

보관