2010-06-10 3 views
1

그것은 백만 시간, 그 같은 this 물었습니다.Nhiberate, 여러 개의 테이블, 같은 클래스

Say Invoice는 기본 클래스이며 InvoiceHistory는 Invoice에서 단순히 상속받은 클래스입니다.

같은 것을 할 때 invoiceList = session.CreateCriteria (typeof (Invoice)). List();

인보이스 (InvoiceHistory의 모든 항목)에서 모든 것을 얻을 수 있습니다.

InvoiceBase가 있어야하고 Invoice 및 InvoiceHistory에 대한 파생 버전이 필요합니까?

답변

2

나는 이것이 NHibernate의 다형성과 관련이 있다고 생각한다. 기본 클래스 (Invoice)에 대한 매핑에서 polymorphism = "explicit"을 지정하십시오.

+0

아주 좋습니다. 감사 – jeff

0

인보이스 상속에 대한 인보이스 기록을 가져 오지 않으려면 트릭을 수행하지 않아야합니다. 심지어 InvoiceBase를 작성해도 도움이되지 않습니다. 상속을 사용하는 경우 nhibernate는 항상 데이터베이스에 존재하는 가장 복잡한 객체를 반환합니다. Invoicehistory에 인보이스를 가리키는 외래 키가있는 경우 간단한 인보이스 대신 invoicehistory 객체를 가져옵니다. 이것은 nhibernate의 기본 기능입니다.
Invoice의 속성 만 명시 적으로 가져 와서 ResultTransformer (자세한 내용은 참조 자료 참조)를 사용하여 수동으로 매핑하거나 SimpleInvoice 객체를 만들고 인보이스 테이블을 참조하여 매핑 할 수 있지만 후자는 일부 stales-state에 직면 할 수 있습니다 동일한 세션 내에서 송장과 SimpleInvoice를 혼합하는 것이 문제입니다. 희망이 도움이됩니다.

관련 문제