2012-08-13 3 views
1

세 개의 joined-subclass (Person, Company, Branch)가있는 Entity Contact가 있습니다. 나는 단지 사람의, 회사 또는 지점을 얻어야한다 연락에 선택 쿼리를 수행 할 때 , 나는 a.class이 = 사람HQL-Query의 where-condition에서 클래스를 사용합니다.

이 작동하고 A 접점에서

가 선택 할 수있는 사람과 지부의 경우에는 정확합니다. 그러나 지점이기 때문에 자신 (회사 ID와 함께) 회사를 참조하고, 내가 연락 A에서 지금

를 선택 할 때 어디 a.class = 회사

그것은 Branch-에서 (회사 ID와 회사를 대체합니다 실재).

누군가가 아이디어를 갖고 있습니까? HQL이 class-value를 실제 열로 대체하지 못하게 할 수 있습니까?

+0

아마도 프로젝트에 식별자 대신 사용할 수 있습니까? [여기] (http://stackoverflow.com/questions/6887168/using-discriminator-with-fluent-nhibernate) 및 [여기] (http://stackoverflow.com/questions/4708969/query-by-discriminator- in-nhibernate). – Handprint

답변

2

은 (네임 스페이스 포함) 클래스의 완전한 이름을 사용해보십시오 :

select from Contact a where a.class = Your.Namespace.Company 

이 속성 이름에서 클래스 이름을 구별하기 위해 NHibernate에 도움이됩니다.