조금 해킹하여 일종의도 가능합니다.
우리는 우리가 발견하는 경우, 하나의 관련 요소를 검색하는 데 사용할 가짜 컬렉션있는 도메인을 정의하는거야 :
public class Foo
{
public virtual BarKey BarKey { get; set; }
public virtual Bar Bar { get { return Bars.SingleOrDefault(); } }
protected virtual ICollection<Bar> Bars { get; set; }
}
public class Bar
{
public virtual BarKey Id { get; set; }
}
//this class must override Equals and GetHashcode. Implementation not shown.
public class BarKey
{
public virtual int X { get; set; }
public virtual int Y { get; set; }
}
BarKey
구성 요소의 일부 속성이 모두 포함 키. 이제
, 매핑 : NH가 알려줍니다
<class name="Foo">
<id ...><generator .../></id>
<component name="BarKey">
<property name="X" />
<property name="Y" />
</component>
<bag name="Bars" inverse="true">
<key property-ref="BarKey">
<column name="X"/>
<column name="Y"/>
</key>
<one-to-many class="Bar"/>
</bag>
</class>
<class name="Bar">
<composite-id name="Id">
<key-property name="X" />
<key-property name="Y" />
</composite-id>
</class>
property-ref
속성은 푸 대신 해당 ID의 BarKey
특성에 바에서 그 열을 일치.