也许,大家也会像我一样,在通过一个对象,通过对象图导航的方式,查询其关联的多个对象时,这个set都是无序的,多次刷新页面后,顺序会变来变去。而对Set的排序的方法又不多,这就相当纠结了,难道真要自己重新写一写查找关联对象的HQL语句?
答案是不用的!
在一番纠结之后,终于找到了方法了,只需要配置一下就ok了!当然,我用的是注解的方式:
@OrderBy("secondcatalogId")
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "TFirstcatalog")
public Set<TSecondcatalog> getTSecondcatalogs() {
return this.TSecondcatalogs;
}
注意@OrderBy,如果不指定条件,则默认是id升序;如果仅指定条件,则默认条件升序(像上面的例子);否则@OrderBy("secondcatalogId desc"),不解释。
原理:
当加上@OrderBy注解后,在通过对象图查询关联对象时,hibernate生成的sql语句将多了个order by的部分,大家应该都明白了吧。