2013-11-22 92 views
1

我需要從數據庫檢索項目並以特定順序在瀏覽器上顯示它們。如何對數據庫結果進行排序?

我有兩個forEach循環,第一個循環通過工廠對象的產品,第二個循環通過不同類型的每個產品。

我需要根據每種產品的價格顯示有序結果,但每次刷新頁面結果時都會使用以下代碼,並以不同的順序顯示。

我需要將結果排序,如果在使用Hibernate檢索或在瀏覽器上顯示時進行排序並不重要。

<c:forEach var="product" items="${factory.products}"> 
     <table border="2"> 
      <thead><tr><td>ID</td><td>Type</td><td>Amount</td></tr></thead> 
      <tbody> 
        <c:forEach var="ptype" items="${product.types}"> 

         <tr> 
          <td>${ptype.id}</td> 
          <td>${ptype.name}</td> 
          <td>${ptype.price}</td> 
         </tr> 

        </c:forEach> 
      </tbody> 
     </table> 
    <hr/> 
</c:forEach> 

我檢索結果如下

Factory factory = (Factory) session.createCriteria(factory.class, "fac") 
         .createAlias("fac.products", "pro") 
         .createAlias("pro.types", "types") 
         .setFetchMode("pro", FetchMode.SELECT) 
         .add(Restrictions.eq("fac.id", facId)) 
         .addOrder(Property.forName("types.price").asc()) 
         .list().get(0); 

回答

1

,以及你在數據庫中的數據進行排序,你應該創建一個保存訂單的狀態的變量。通常使用兩個變量:一個用於列索引,另一個用於列順序(升序|降序)。在保存這些變量的操作調用之間,您可以使用參數或會話映射,或使用攔截器來設置order變量的會話範圍。開關

.addOrder(order.equals("asc")? 
    Property.forName("types.price").asc():Property.forName("types.price").desc()) 
+0

將您解釋一下這句話的順序,我不明白這一點(順便說一句行動呼籲救....) – J888

+0

我怎麼能知道你沒拿到?問一個問題,可能是[this](http://stackoverflow.com/a/17107828/573032)或[that](http://stackoverflow.com/a/18462744/573032)或[這些]( http://stackoverflow.com/q/17244036/573032)更好地解釋你。 –

相關問題