2011-04-14 4 views
1

조인 된 서브 클래스 엔티티 세트를 부모 엔티티에 맵핑하려고합니다. NHibernate에 의해 생성되는 SQL이 올바르지 않은 것 같습니다. 내 매핑에서 무엇인가 놓치고 있습니까? 이 문제에 접근 할 수있는 또 다른 방법이 있습니까?Hibernate 조인 된 서브 클래스 엔티티의 간단한 컬렉션

<class name="ResultItem" table="result"> 

    <id name="ID"> 
    <generator class="identity" /> 
    </id> 

    <many-to-one name="Job" column="JobID"/> 
    <property name="Timestamp"/> 
    <many-to-one name="User" column="UserID"/> 

    <joined-subclass name="ResultItemAttachment" table="result_attachment"> 
    <key column="ID"/> 
    <property name="Comment"/> 
    </joined-subclass> 

</class> 

이것은 NHibernate에 의해 생성되는 SQL입니다. 슈퍼 클래스와 하위 클래스 멤버가 혼동을 일으키는 것처럼 보입니다. JobID가있는 유일한 테이블은 result_attachment가 아닌 결과 테이블입니다. 사전에

SELECT attachment0_.JobID as JobID1_, 
     attachment0_.ID as ID1_, 
     attachment0_.ID as ID26_0_, 
     attachment0_1_.JobID as JobID26_0_, 
     attachment0_1_.`Timestamp` as Timestamp26_0_, 
     attachment0_1_.UserID as UserID26_0_, 
     attachment0_.`Comment` as Comment33_0_ 
FROM result_attachment attachment0_ 
inner join result attachment0_1_ on attachment0_.ID=attachment0_1_.ID 
WHERE attachment0_1_.JobID=?; 

감사

+1

매핑이 나에게 잘 어울립니다. 쿼리를 게시 할 수 있습니까? –

+0

매핑이 정상입니다. ResultItem 및 ResultItemAttachment 클래스를 표시 할 수 있습니까? –

+0

쿼리에서 result_attachment.JobID는 어디에 있습니까? attachment0_1_은 결과의 별칭입니다. –

답변

0

나는 (2.1 거기 가입일 : |)이이 현재 NHibernate에 버그가 두려워 apperently의 현재 알파의 수정이 3.2

https://nhibernate.jira.com/browse/NH-1747

가능한 해결 방법은 런타임에 수동으로 가방을 가져 오는 것입니다. 거의 이상적입니다. 다른 옵션은 알파 버전을 실행하고 프로덕션 환경에서 알파를 실행하는 것은 좋은 생각이 아닙니다.

+0

감사합니다. 3.2의 안정 버전을 계속 주시 할 것입니다. – enexar

+0

같은데, 지금이 코드를 작성하는 것이 싫어. (망가진 날! : '( –

관련 문제