NHibernate中没有序号的排序列表
本文关键字:排序 列表 NHibernate | 更新日期: 2023-09-27 18:11:54
我在类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>
我如何重写映射以删除这些空位置?
由于我们在表中采用的遗留概念,我有类似的情况:我们的索引列总是从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)