2011-03-24 2 views
0

세 개의 엔티티 유형 (A, B 및 C)이 있습니다.NHibernate 3.x : 동일한 테이블, 세 개의 매핑, 각 결과 세 번

이들은 동일한 데이터베이스 테이블에 매핑됩니다.

B와 C의 상속 A.

나는 B와 C는 구성 파일에 매핑 된 남아마다 A, B와 C

에 의해 매핑 된 데이터베이스 테이블의 세 가지 기록이있어, I 각 엔티티를 세 번 가져옵니다.

B와 C에 대한 매핑을 제거하려고 시도한 다음 엔티티의 전체 개수가 3입니다.

마지막으로 SQL Server를 프로파일 링했으며 응용 프로그램에서 시작된 쿼리가 세 가지 SQL SELECT 명령으로 변환되었습니다.

어떻게 이것을 피할 수 있습니까? 또는 엔티티를 얻으려는 시도가 목표 테이블이 매핑 될 때까지 여러 번 끝내는 것을 의미하지 않고 N 클래스를 동일한 테이블에 매핑 할 수 있는지 알고 싶습니다.

미리 감사드립니다.

+0

문제가 무엇인지 명확하지 않습니다. 몇 가지 코드, 매핑 및 반환되는 내용의 일부를 게시 할 수 있습니까? – Vadim

+0

그러면 내 텍스트를 다시 확인하십시오. 3 엔티티가 매핑 한 1 개의 테이블. 나는 3 개의 기록을 가지고있다. 엔티티로 이러한 레코드를 검색하려고하면 9 개의 결과가 나타납니다 (각 엔티티는 복제됩니다). 고맙습니다. –

+0

또 다른 세부 사항 : Query Over와 HQL 기준으로 동일한 작업을 시도했습니다. 같은 결과. –

답변

4

각 구체적인 클래스를 개별적으로 매핑하는 것이 아니라 상속 매핑 전략을 사용하여 클래스 계층을 매핑해야합니다. 세 가지 유형 모두를 이미 하나의 테이블에 저장 했으므로 table-per-class 매핑을 사용해야합니다. thisthis을 참조하십시오.

+0

이 설명서를 보겠습니다. 좋은 소리. 나는 내일 올바른 것으로 표시 할 것이다! 고맙습니다. –

관련 문제