问题背景:持久化类Privilege存在一对多的关系
public class Privilege implements Serializable{
private Long id;
...
private Set<Privilege> children = new LinkedHashSet<Privilege>();
...
}
在struts2的valueStack栈顶有一个privilege对象,然后我需要在jsp页面里取出其children值: <s:iterator value="children">
但问题是:得到的children集合中的privilege对象是无序的!毕竟是Set集合!
解决方案:在Privilege.hbm.xml中添加配置order-by="id"则将根据id进行顺序查询
<set name="children" cascade="all" inverse="false" lazy="false" order-by="id">
<key>
<column name="parent_id"></column>
</key>
<one-to-many class="Privilege"/>
</set>
则hibernate在发出sql语句时会添加 “order by... asc”
如果想要逆序查询,则order-by="id desc"