2009-12-14 5 views
1

콜렉션 매핑을위한 임의의 SQL where 절을 지정할 수있다. 예를 들면 다음과 같습니다.Hibernate : 컬럼 이름이 모호 할 때 일대 다 관계에서 where 절이 작동하지 않는다.

<map name="myEntity" where="foo = 1" /> 

그러나 어떤 이유로 열 이름이 모호하면 SQL이 실패합니다. 예를 들어, 조인을 사용하려는 경우이 문제가 발생할 수 있습니다.

테이블 별칭이 자동으로 생성되면 열 이름을 한정 할 수 없습니다. 이로 인해이 기능이 다소 어리석은 것처럼 보입니다. 주변에 해결 방법이 있는지 아는 사람 있습니까?

답변

4

NHibernate는 참조하는 속성에 대한 올바른 별칭을 알아 내야합니다. foo는 항목 개체 유형 (지도 컬렉션에있는 항목 유형)의 매핑 된 속성입니까?

예를 들어이 작동합니다

<class name="Category" table="Category"> 
    <id name="Id"> 
    <generator class="guid.comb" /> 
    </id> 

    <property name="Name" not-null="true" length="255" /> 

    <bag name="ProductList" table="Product" cascade="none" where="Name like '%test%'" fetch="join"> 
    <key column="CategoryId" /> 
    <one-to-many class="Product" /> 
    </bag> 

</class> 

카테고리와 "이름"라는 제품 클래스하지만,이 경우 제품 클래스에 정의에 사용됩니다 NHibernate에 모두의 속성이 있습니다.

+0

고맙습니다. 그것은 다른 시나리오에서 나를 도왔다. –