0

我在 Foo 类中有一个排序列表。我读到索引列必须是连续的,并且从 0 和 1、2、3、4、5 开始...

就我而言,在order列中我有 0、1、2、5。所以Foo对象有一个长度为 6 的列表。位置 3 和 4 为空。

这是地图

<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总是保持一个讨厌的空值。

我们案例的解决方案是使用这些集合作为ISet替代。

为了保持顺序,我们现在将order-by属性放入映射中,并自己控制索引持久性。

使用您的示例,这将变为:

<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 回答