3

クラスをマップしようとしています

Class Node {
Node parent;
List<Node> children;
}

多対 1 と 1 対多のさまざまな組み合わせを試しましたが、うまくいきません。マッピング ファイルを貼り付けたはずですが、あまりにも多くのことを試したので、どれを貼り付ければよいかわかりません。助けてください:(また、LISTの代わりにSETを使用していた場合、クラスのマッピングに成功しましたが、リストを使用すると、リストのインデックスを格納するために使用される列を更新できません。どうもありがとう.

4

1 に答える 1

2

リストインデックスは、オブジェクトが親の子リストのどこにあるかを調べることによって導出されるため、直接更新することはできません。オブジェクトがリストのインデックス10にあり、list-indexプロパティが5に設定されている場合、Hibernateはどちらを使用する必要がありますか?

したがって、通常、リストインデックスを格納するために使用する列をHibernateに指示し、その後はそれを忘れます。

ただし、list-indexプロパティに直接アクセスするために(などの読み取り専用の方法でgetIndexInList())プロパティをオブジェクトにマップする場合は、を使用してプロパティをマップする必要がありますinsert=false update=false

私はXMLマッピングに少し錆びていますが、これは私がうまくいくと信じているものに近いものです。問題がある場合と、どのようなエラーメッセージが表示されるかをお知らせください。

<hibernate-mapping>
 <class name="com.example.Node" table="node">
    <id name="id" column="nodeId">
        <generator class="native"/>
    </id>

    <property
        name="listIndex"
        column="listIndex"
        insert="false"
        update="false" />

    <many-to-one
        name="parent"
        column="parentNodeId"
        class="com.example.Node"/>

    <list name="children" inverse="true" cascade="all">
        <key column="parentNodeId"/>
        <list-index column="listIndex"/>
        <one-to-many class="com.example.Node"/>
    </list>

 </class>
</hibernate-mapping>
于 2011-03-23T20:29:48.860 に答える