2009-05-24 152 views
3

因此,我已經辭職了,因爲我無法可靠地使用List的順序,因爲Hibernate顛倒了它,並且大家都說不這樣做,所以我已經爲我的類添加了一個字段作爲位置。我有:如何通過集合中對象的屬性對List進行排序?

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

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

現在我不知道如何與列表進行交互。當我第一次從數據庫中獲得數據並開始使用數據庫時,是否應該按位置對其進行排序,然後我可以保留已寫入的所有用戶重新編排的代碼,然後將所有位置重置爲保存到訂單清單,所以我可以訴諸我回來時?

SKIP實際的問題在這裏:

這似乎是最好的辦法,但我怎麼排序的集合中的對象的屬性列表?

回答

5

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

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

尤瓦= 8-)

+0

這是我現在使用的解決方案,非常感謝。 – Joshua 2009-05-24 17:04:37

3

如果您想要列表以便由Hibernate保存,你應該使用<list-index>映射索引列,如6.2.3 Indexed Collections中所述,而不是將其添加爲任務字段並自行排序。

這樣,您的Java代碼根本不必擔心索引值。這個列表在被Hibernate返回時會被正確排序,當列表被修改時,Hibernate會負責更新索引。

+0

啊,終於有了,這是正確的解決方案,但是當我嘗試實現它時,數據庫我已經有了一些障礙,所以我可能不會實現這個項目的真正解決方案。 :) 謝謝! – Joshua 2009-05-24 17:05:39

相關問題