在Hiebernate集合映射关系中,排序问题
<set name="addresses" table="addresses" *sort="natural"*>
<key column="uid" />
<element column="address" type="string" />
</set>
sort=”natural”保证了出库排序,而入库的时候并没有排序,入库排序决定于
Set<String> address = new HashSet<String>
[这是入库不排序];
Set<String> address = new TreeSet<String>
这是因为,sort=”natural”是客户端排序! 数据库查询出的数据没有排序,数据库把没有排序的结果通过网络发送给java程序,
java程序接收的是没有排序的数据,java程序在自己进行排序!
如果想要出库和入库都排序必须Treeset和sort搭配使用;
2:order by
<set name="addresses" table="addresses" order-by="adress asc">
<key column="uid" />
<element column="address" type="string" />
</set>
order by 和 sort都可以保证数据出库排序,但是order by 是在数据库内把数据排好顺序后再发给Java客户端,(数据库排序比较快)