4

どうすればこの問題を解決できますか

エンティティのマッピングで繰り返される列:com.abc.domain.PersonConnect列:PERSON_ID(insert = "false" update = "false"でマッピングする必要があります)

これは私のhbmファイルからの抜粋です

<class name="com.abc.domain.PersonConnect" table="PERSON_CONNECT">    
    <composite-id>
        <key-many-to-one name="Parent" class="com.abc.domain.Person" column="PARENT_PERSON_ID"/>
        <key-many-to-one name="Child" class="com.abc.domain.Person" column="CHILD_PERSON_ID"/>
    </composite-id>

    <many-to-one class="com.abc.domain.Person" fetch="select" name="parent" lazy="false" > 
        <column length="20" name="PERSON_ID" not-null="true"/> 
    </many-to-one> 
    <many-to-one class="com.abc.domain.Person" fetch="select" name="child" lazy="false" > 
        <column length="20" name="PERSON_ID" not-null="true"/> 
    </many-to-one>    
</class>

テーブルはこのようになります

Person_Connect

  • PK-PARENT_PERSON_ID
  • PK-CHILD_PERSON_ID

  • PK-PERSON_ID
  • FNAME
  • LNAME
4

2 に答える 2

2

あなたのマッピングは間違っています、これは正しいマッピングです。多対1の側では、列名は同じテーブル内の列であり、Personの主キーを参照する外部の列です。

<class name="com.abc.domain.PersonConnect" table="PERSON_CONNECT">

 <composite-id>
    <key-many-to-one name="Parent" class="com.abc.domain.Person" column="PARENT_PERSON_ID"/>
    <key-many-to-one name="Child" class="com.abc.domain.Person" column=" CHILD_PERSON_ID"/>
     </composite-id>

</class>
于 2011-09-28T03:12:00.683 に答える
1

たとえば、「親」と「子」の両方を同じ列にマップする必要はないようです。それはおそらく問題です。それ以外の場合は、エラーの内容を実行しinsert="false" update="false"、列マッピングの1つに追加します。列は、単一のプロパティにのみ「属する」ことができます。xそうしないと、一方のプロパティが値を指定し、もう一方のプロパティが値を指定するという解決できない状況に陥る可能性がありますy

于 2011-09-28T02:38:01.913 に答える