2013-04-24 60 views
0

Spring Roo中默認的一對多關係有一個用於維護關係數據的Set變量。Spring Roo一對多沒有排序

public Set<MyChildObject> Parent.getChildren() { 
    return this.children; 
} 

當我嘗試在我的JSPX文件中使用這個數據時,數據沒有排序。

<c:forEach items="${parent.children}" var="item"> 
    <c:out value="${item.id} " /> 
</c:forEach>  

什麼是更好更簡單的方法來排序數據在JSPX或域?請提供一個工作示例。

+0

套裝不分揀。如果你想要一個排序的集合,你需要使用列表。這將根據數據庫默認使用的任何標準進行排序,通常是主鍵和您設置的所有索引。如果您想要強制排序順序,可以使用(at)OrderColumn註釋來指示列表排序的列和方向。 – CodeChimp 2013-04-24 19:25:18

+0

以及這是spring roo一對多getter函數返回一個集合的默認實現。 – niks75 2013-05-14 07:53:26

+0

您可以修改Roo創建的生成的Java代碼。事實上,你幾乎預計會這樣做。只要Roo Shell正在運行,它就會識別出.java文件已更新,並相應地更改獲取者/設置者。 – CodeChimp 2013-05-17 11:28:58

回答

0

你只有它像一個方法。你應該有一個變量:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "the relationship in the other class Ithink it could be for you parent", fetch = FetchType.LAZY, orphanRemoval=true) 
public Set<MyChildObject> child= new HashSet<MyChildObject>(); 

與你必須把這個在show.jspx:

<field:display field="child" id="your child id" object="${the class}" z="your chid z"/> 
+0

我認爲它仍然沒有排序。根據定義,集合是未排序的,但SortedSet除外。在內部,我相信Spring和Roo正在創建一個包裝了Set的代理對象(用於延遲加載等)。我不是說這是不可能的,它不是一種SortedSet,只是我不相信它。 – CodeChimp 2013-05-17 11:28:23

+0

嗯,我必須改變getter函數,並使用Comparator和TreeSet返回排序列表。 – niks75 2013-05-28 07:49:09

0

使用本

@OrderBy("orderingField asc") 

,不要忘了

import javax.persistence.OrderBy;