0

クラスFooにソートされたリストがあります。インデックス列は連続している必要があり、0 と 1、2、3、4、5 で始まる必要があることを読みました...

私の場合、order列には 0、1、2、5 があります。したがって、Fooオブジェクトには長さ 6 のリストがあります。位置 3 と 4 は null です。

これが地図です

<list name="Bars" cascade="all-delete-orphan">
  <key column="Foo_id" />
  <index column="order" />
  <one-to-many class="Bar" />
</list>

このヌル位置を削除するためにマップを書き直すにはどうすればよいですか?

4

1 に答える 1

0

テーブルで採用した従来の概念が原因で、同様の状況が発生しました。インデックス列は常に1で始まり、コレクションをリストとして取得すると、位置0に常に厄介な null 値が残ります。

この場合の解決策は、代わりにこれらのコレクションを使用することでしたISet

順序を維持するために、order-by属性を mappingsに配置し、インデックスの永続性を自分で制御します。

あなたの例を使用すると、次のようになります。

<set name="Bars" cascade="all-delete-orphan" order-by="order">
  <key column="Foo_id" />
  <one-to-many class="Bar" />
</set>

PS: コレクション変数の型を次のように変更することを忘れないでください。Iesi.Collections.Generic.ISet(Of Bar)

于 2013-05-02T14:16:08.097 に答える