Person과 Address라는 두 개의 테이블이있다. 두 개의 외래 키 (명시 적 기본 키 열) 이외의 추가 열 IsCurrent가 포함 된 매핑 테이블 PersonAddressMap이 있습니다. 필자는 Person, Address 및 PersonAddressMap 각각에 대해 하나씩 세 가지 매핑 클래스를 만들었습니다. Person의 모든 Addresses에 액세스해야하고 Address의 특정 주소를 가진 모든 Person에 액세스해야하므로 Person 및 Address 클래스의 PersonAddressMap에 일대 다 매핑이 필요합니다. 이제 문제는 양방향 협회가 무한 루프를 만드는 것입니다. 연관 중 하나를 제거하면로드가 제대로 작동하지만 매핑 테이블에 저장이 삽입되지 않습니다 (예 : Person에서 PersonAddressMap으로의 연결이 하나 뿐이고 새 주소로 새 Person을 삽입하려고하면 Person 만 해당). 삽입되고 있습니다.). 매핑 파일은 다음과 같습니다.NHibernate 매핑 테이블에 추가 컬럼을 가진 many to many 매핑
<class name="Person" table="Person">
<id name="Id">
<column name="Id" sql-type="int" not-null="true" />
<generator class="identity" />
</id>
<property name="Name" column="Name"/>
<bag name="AddressDetails" table="PersonAddressMap" cascade="all" >
<key column="PersonId" />
<one-to-many class="PersonAddressMap" />
</bag>
</class>
<class name="Address" table="Address">
<id name="Id">
<column name="Id" sql-type="int" not-null="true" />
<generator class="identity" />
</id>
<property name="City" column="City"/>
<bag name="PersonDetails" table="PersonAddressMap" cascade="all" >
<key column="AddressId" />
<one-to-many class="PersonAddressMap" />
</bag>
</class>
<class name="Job" table="Job" lazy="false">
<composite-id>
<key-many-to-one column="PersonId" name="Person" />
<key-many-to-one column="AddressId" name="Address" />
</composite-id>
<property name="IsCurrent" column="IsCurrent"/>
</class>
미리 감사드립니다.