오브젝트 테이블과 오브젝트 별명 테이블이 있습니다. 모든 가져 오는 기본 저장소에서 다음nhibernate 콜렉션 세트 페치 조인을 사용하여 n + 1 선택 및 중복 행을 피하십시오.
<class name="Object" table="Object" lazy="false">
...
properties...
...
<set name="Aliases" table="Aliases" inverse="true" lazy="false" fetch="join" >
<key column="ObjectId" />
<element column="Name" type="String"/>
</set>
...
</class>
session.CreateCriteria(typeof (T)).List<T>();
: 나는이 같은 모음을 매핑하면
object.Aliases
:
별명을 문자열 단지 설정 모음입니다 개체는 각 별칭에 대해 중복을 반환합니다. 왜? 목록에서 중복 된 객체를 제거하려면 어떻게해야합니까?
감사합니다.
EDIT : 매핑이 업데이트되었지만 그게 모두 매핑입니다. 별칭은 내가이 혼란 한
<set name="Aliases" batch-size="10" ...
선택 n + 1 또는 중복에 대해 묻고 있습니까? 아니면 둘다? – Rippo
조금 더 많은 정보, 두 테이블의 코드 및 매핑을 게시 할 수 있습니까? – Rippo
n + 1 select를 제외시키기 위해 적절한 매핑을 요청하고 중복을 반환하지 않습니다. fetch = "join"을 제거하면 결과에 중복이 없지만 n + 1 선택 문제가 있습니다. fetch = "join"을 남겨두면 단 하나의 선택 만 있지만 중복 된 문제가 발생합니다. 매핑의 경우 해당 부분 만 ... 그러나 더 자세한 설명으로 업데이트하겠습니다. –