2012-07-05 2 views
0

나는 다음과 같은 sitation 매핑 어려움에 봉착지도 : 나는 연결 ID를 가진 사람이NHibernate에이 속성에 열 및 가방

을, 나는 가방과 속성을 매핑 얻기 위해 이것을 사용합니다. 데이터베이스가 이미있는 경우 작동합니다. 그러나 단위 테스트의 경우 스키마에서 하나를 생성하면 "열 이름 중복"오류가 발생합니다.

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="DomainLayer.SearchDomain" assembly="Test"> 
    <class name="SearchPerson" table="person" lazy="false" mutable="false"> 
    <id name="Id" column="`id`" type="int"> 
     <generator class="identity" /> 
    </id> 
    <property name="Name" column="`NAAM`" type="string" /> 
    <property name="FirstName" column="`VOORNAAM`" type="string" /> 
    <property name="ConnectionId" column="`Koppelid`" type="int" /> 
    <bag name="Languages" lazy="false" mutable="false" access="field.camelcase-underscore"> 
     <key property-ref="ConnectionId" column="Koppelid" /> 
     <one-to-many class="DomainLayer.Person.LanguageSkill, Test" /> 
    </bag> 
    </class> 
</hibernate-mapping> 

문제 : 재산에서와 가방에서 키 속성 모두 "Koppelid"여기

맵핑입니다.

편집 :

LanguageSkill 매핑 : 그것은 실제로 작동합니다

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="DomainLayer.Person" assembly="Test"> 
    <class name="LanguageSkill" table="languageskill" lazy="false"> 
    <id name="Id" type="Int32"> 
     <generator class="identity" /> 
    </id> 
    <property name="ConnectionId" column="`KoppelId`" type="Int64" /> 
    <property name="Remark" column="`Opmerking`" type="string" /> 
    <property name="Source" column="`CdOorsprong`" type="string" /> 
    <property name="MotherTongue" column="`moedertaal`" type="boolean" /> 
    <property name="ModifiedDate" column="`wyzdat`" type="DateTime" /> 
    </class> 
</hibernate-mapping> 
+0

키 열을 얻었다 문제가되지 마라. 거기에 오류가 의심되기 때문에 LanguageSkill의 매핑을 게시하십시오. – Firo

+0

네 말이 맞아. LanguageSkill의 매핑에는 ConnectionId (열 이름 "koppelid") 속성이 포함되어 있습니다. OP에서 언어 스킬 매핑을 추가했습니다. –

답변

1

. '한 경우에는 표시했으나 다른 표시에는 표시하지 않았기 때문일 수 있습니다.

이 시도 :

<bag ...> 
    <key property-ref="ConnectionId" column="`Koppelid`" /> 
+0

이것은 트릭을 했어! 고마워, 그것이 창조에 영향을 미쳤다는 것을 몰랐다. –

0

이유는 열이 LanguageSkillMapping 두 번 정의되어 있는지 사실이다. 당신이 열을 매핑하기 때문에 당신이 참조로지도하고

<bag name="Languages" inverse="true" lazy="false" mutable="false" access="field.camelcase-underscore"> 
    <key property-ref="ConnectionId" column="Koppelid" /> 
    <one-to-many class="DomainLayer.Person.LanguageSkill, Test" /> 
</bag> 


<many-to-one name="SearchPerson" column="`KoppelId`" /> 

업데이트를 반전하기 위해 가방을 설정할 수 있습니다 : 신경 끄시 고, 스테판은 다른 테이블에없는 테이블 WN 그래서이 할 수있는 부대 효과에

+0

당신은 역함수에 대해서도 마찬가지입니다. 문제는 이것입니다. SearchPerson은 엄격히 검색 도메인 용이고 languageskill은 일반 도메인에 있습니다. 어쨌든 고마워! –

관련 문제