使用的框架:弹簧
使用的ORM:休眠
我有两个班级
class BatchExceptionDetails{
...
private Set<BatchExceptionComments> batchExceptionComments;
}
class BatchExceptionComments implements Comparable<BatchExceptionComments>{
...
@Override
public int compareTo(BatchExceptionComments o) {
// TODO Auto-generated method stub
return this.getAddedOn().compareTo(o.getAddedOn());
}
}
它们被一对一映射。
BatchExceptionDetails中有一组BatchExceptionComments。
我想根据日期对集合进行排序。 BatchExcpetionComment具有类型为java.util.Date的属性,即addedOn。我希望最新评论成为set的第一个元素。
我收到的集合未排序。您能指导我哪里出问题了吗?
预先感谢
答案 0 :(得分:5)
Set
是一个接口,因此无法确定它是否可排序。您必须使用正确的实现,例如TreeSet。如果你想
强调这是一个有序集,您应该使用SortedSet
界面。 TreeSet
实现SortedSet
。
或者,您可以使用List
,然后可以使用Collections.sort
对其进行排序。
答案 1 :(得分:1)
经过反复研究后,我找到了解决方案。
我刚刚宣布了布景
private Set<BatchExceptionComments> batchExceptionComments;
我使用Order By来安排集合,而不是使用Comparable。
<set name="batchExceptionComments" table="BATCH_EXCEPTION_COMMENTS"
inverse="true" fetch="select" lazy="false" order-by="commentId">
<key>
<column name="EXCEPTION_ID" not-null="true" />
</key>
<one-to-many class="com.beans.BatchExceptionComments" />
</set>
我相信按ID排序会更好。
P.S。我使用的是hbm.xml而不是注释