1

私は自分でテストを実行しましたが、これが可能であるとは信じていませんが、確認を得たいと思っていました.

休止状態を使用して永続化されている 2 つのオブジェクトがChildありParentます。はChild常に単一への参照をParent持ち、オブジェクトParentのセットを持ちます。Childこれに加えて、親には子オブジェクトで構成されるお気に入りのリストがあります。

これは、次の HBM 定義を使用してマップされます。

<class name="Parent" table="parent">
    <id name="id" column="id">
        <generator class="increment"/>
    </id>

  <set cascade="all,delete-orphan" inverse="true" name="children">
    <cache usage="nonstrict-read-write"/>
    <key column="parent_id"/>
    <one-to-many class="Child"/>
  </set>

  <list cascade="none" name="favorites">
    <cache usage="nonstrict-read-write"/>
    <key>
      <column name="parent_id" not-null="false"/>
    </key>
    <index>
      <column name="fav_index"/>
    </index>
    <one-to-many class="Child"/>
  </list>
</class>

<class name="Child" table="child">
    <id name="id" column="id">
        <generator class="increment"/>
    </id>
  <many-to-one column="parent_id" name="parent" not-null="false"/>

</class>

私が抱えている問題はparent_id、テーブルの列にありchildます。親への参照を持つ子オブジェクトを永続化するとき、およびお気に入りのリストを持つ親オブジェクトを永続化するときに、正常に機能します。ただし、お気に入りの親リストから子を削除しようとすると、child.parent_id永続化する前に子から親オブジェクトを削除していなくても、列が null に設定されます。

私のテストから、親マッピングのお気に入りキー列に別の列名を使用する以外に、これに関連する方法はないと思います。これらの 2 つの列は常に同じ値を持つため、これを行うのは少し残念に思えます。

これが可能な場合、または2つの列を使用する必要がある場合は誰ですか?

ありがとう

4

0 に答える 0