Hibernate: 一对多里对 set 的排序

一:注解 [url]http://www.iteye.com/topic/142677[/url]
@OneToMany(mappedBy="user",fetch=FetchType.EAGER)         
@OrderBy(name = "tel_id DESC")
public Set<Tel> getTels() {
return tels;
}


谢谢各位,我已经解决了,
我翻看了文档,[color=darkblue]orderby的方式对list是有效的[/color]
[color=darkblue]set和map用mapkey[/color]
[color=darkblue]我把set改为list了,用了orderby就能排序了[/color]。
谢谢你们了。


二:非注解: [url]http://uule.iteye.com/blog/1046723[/url]
一对多里面对 set 的排序,建议采用以下办法:

1、首先,将POJO 中的 set 成员的类型改为 TreeSet 类型,因为 TreeSet 是实现了 SortedSet 的可排序集合类。

private Set labproductflowinfos = new TreeSet(new FlowInfoComparator());//为 TreeSet 提供一个自定义的比较器


然后修改配置文件,为<set> 添加 sort 属性,属性取值可以为一个自定义的比较器。如下:
public class FlowInfoComparator implements Comparator {    
public int compare(Object o1, Object o2) {
if(o1 instanceof Labproductflowinfo &&
o2 instanceof Labproductflowinfo){
Integer s1 = ((Labproductflowinfo)o1).getSequenceNum();
Integer s2 = ((Labproductflowinfo)o2).getSequenceNum();
return s1.intValue() - s2.intValue();
}
return 0;
}}

<set name="labproductflowinfos" inverse="true"    
cascade="all-delete-orphan" lazy="false" sort="com.zsc.hibernate.FlowInfoComparator">

2、第三种方式比较简单就是在hbm配置文件里配置采取排序的序列。<set ... order-by="date asc" />第一个参数是选择排序的序列,第二个参数是升序还是降序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值