我在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>
如何重写地图以删除此空位?
答案 0 :(得分:0)
由于我们在表中采用的遗留概念,我遇到了类似的情况:我们的索引列始终以 1 开头,在 0 位置始终是一个令人讨厌的空值当我们将集合检索为列表时。
我们案例的解决方案是将这些集合改为ISet
。
为了保持顺序,我们现在放置order-by
attribute in our 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)