如何按集合中对象的属性对List进行排序?

时间:2009-05-24 08:47:35

标签: java hibernate list sorting

所以我已经让自己无法正确使用List的顺序,因为hibernate会反转它并且每个人都说不要这样做,所以我在我的班级添加了一个字段作为位置。我有:

@Entity
class Procedure {
...
int procedureId;
List<Task> tasks;
...
}

@Entity
class Task {
...
int taskId;
int position;
}

现在我不知道如何与列表进行交互。当我第一次从数据库中获取它并开始使用它时,我应该按位置对它进行排序,然后我可以保留我已经编写的所有用户重新排列代码,然后只需将所有位置重置保存到订单这个名单让我可以在我回来时求助吗?

跳到这里的实际问题:

这似乎是最好的方法,但我如何按照集合中对象的属性对List进行排序?

2 个答案:

答案 0 :(得分:6)

例如,要按位置排序,您可以使用

java.util.Collections.sort(tasks, new Comparator<Task>() {
@Override
public int compare(Task t1, Task t2) {
    return t1.getPosition() - t2.getPosition();
});

Yuval = 8 - )

答案 1 :(得分:3)

如果希望Hibernate保留列表顺序,您应该使用<list-index>映射索引列,如6.2.3 Indexed Collections中所述,而不是将其添加为Task字段并对其进行排序自己。

这样,您的Java代码根本不必担心索引值。当Hibernate返回时,列表将被正确排序,并且当列表被修改时,Hibernate将负责更​​新索引。