【问题标题】:How to sort database results?如何对数据库结果进行排序?
【发布时间】:2013-12-06 18:59:00
【问题描述】:

我需要从数据库中检索项目并以特定顺序在浏览器上显示它们。

我有两个 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);

【问题讨论】:

    标签: hibernate jsp sorting struts2 jstl


    【解决方案1】:

    除了对数据库中的数据进行排序外,您还应该创建一个保存订单状态的变量。通常使用两个变量:一个用于列索引,另一个用于列顺序(升序|降序)。在保存这些变量的操作调用之间,您可以使用参数或会话映射,或使用scope 拦截器来设置order 变量的会话范围。切换顺序

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

    【讨论】:

    • 你能解释一下这句话吗,我不明白(Btw action calls to save ....)
    • 我怎么知道你没有得到什么?问一个问题,可能是this,或者that,或者those更好的解释你。
    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 2021-06-29
    • 2014-12-02
    相关资源
    最近更新 更多