我需要从数据库中检索项目并按特定顺序在浏览器上显示它们。
我有两个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);
答案 0 :(得分:1)
除了在数据库中对数据进行排序之外,您还应该创建一个保存订单状态的变量。通常使用两个变量:一个用于列索引,另一个用于列顺序(升序|降序)。在保存这些变量的动作调用之间,您可以使用参数或会话映射,或使用scope
拦截器来设置order
变量的会话范围。切换订单
.addOrder(order.equals("asc")?
Property.forName("types.price").asc():Property.forName("types.price").desc())