Set是无序不可重复的集合,常用的实现类HashSet也是如此,另外还有个LinkedHashSet,在每个节点上通过一个链表串联起来,这样,就可以保证确定的顺序。对于希望有常量复杂度的高效存取性能要求、同时又要求排序的情况下,可以直接使用LinkedHashSet
回到正题,今天才发现这样写之后,就可以根据subTypes这个集合所映射的表中的id字段的顺序存储。
<set name="subTypes" inverse="true" order-by="id">
<key>
<column name="parent_id" />
</key>
<one-to-many class="go.derek.entity.SubType" />
</set>
此外还可以用LinkedHashSet来给list去重。
return new ArrayList<T>(new LinkedHashSet<T>(list));