Spring MVC Hibernate 预加载 JSTL c:foreach

Spring MVC Hibernate Eager Load JSTL c:foreach

我在显示具有一对多关联项目的列表订单时遇到重复行的问题。订单将重复订单中的商品数量,而不是每个订单重复一次。

这是我的代码... 控制器映射

    // RETURNS A LIST OF ALL ORDERS IN KITCHEN
    @RequestMapping("/orderstatus")
    public String showAddresses(Model model) {
    List<Orders> deliveryKitchen = ordersService.getDeliveryKitchen();
    List<Orders> deliveryOut = ordersService.getDeliveryOut();
    List<Orders> insideKitchen = ordersService.getInsideKitchen();
    List<Orders> insideOut = ordersService.getInsideOut();
    List<Orders> takeoutKitchen = ordersService.getTakeoutKitchen();

    model.addAttribute("deliveryKitchen", deliveryKitchen);
    model.addAttribute("deliveryOut", deliveryOut);
    model.addAttribute("insideKitchen", insideKitchen);
    model.addAttribute("insideOut", insideOut);
    model.addAttribute("takeoutKitchen", takeoutKitchen);

    return "orderstatus";

}

一部分。jsp

<div>
Delivery
<table class="orders">
    <tr>
        <td>Order #</td>
        <td>Name</td>
        <td>Phone Number</td>
        <td>Street</td>
        <td>Items</td>
        <td>Total</td>
    </tr>

    <c:forEach var="deliveryKitchen" items="${deliveryKitchen}">
        <tr>
            <td><c:out value="${deliveryKitchen.idorders}"></c:out></td>
            <td><c:out value="${deliveryKitchen.users.name}"></c:out></td>
            <td><c:out value="${deliveryKitchen.users.phoneNo}"></c:out></td>
            <td><c:out value="${deliveryKitchen.addresses.street1}"></c:out>

    <td>
    <c:forEach var="insideItems" items="${deliveryKitchen.orderitem}">

            <c:out value="${insideItems.items.name}"></c:out>

    </c:forEach>    
...


 what the page shows 
Delivery
Order # Name    Phone Number    Street  Items   Total
57  Panikos 9172955593  214-04 33rd ave Healthy Wrap Meatlover's Omlette           18.4 Out for Delivery    Edit
57  Panikos 9172955593  214-04 33rd ave Healthy Wrap Meatlover's Omlette    18.4    Out for Delivery    Edit
59  Jerry   7894578978  2145 fulton Belgian Style Waffle Chicken Salad Two    Eggs Tuna Salad Sandwich Chicken Noodle Baja Chicken Macaroni and Cheese (kids)  Western Omlette  53.4    Out for Delivery    Edit
59  Jerry   7894578978  2145 fulton Belgian Style Waffle Chicken Salad Two Eggs Tuna Salad Sandwich Chicken Noodle Baja Chicken Macaroni and Cheese (kids) Western Omlette  53.4    Out for Delivery    Edit
59  Jerry   7894578978  2145 fulton Belgian Style Waffle Chicken Salad Two Eggs Tuna Salad Sandwich Chicken Noodle Baja Chicken Macaroni and Cheese (kids) Western Omlette  53.4    Out for Delivery    Edit
59  Jerry   7894578978  2145 fulton Belgian Style Waffle Chicken Salad Two Eggs Tuna Salad Sandwich Chicken Noodle Baja Chicken Macaroni and Cheese (kids) Western Omlette  53.4    Out for Delivery    Edit
59  Jerry   7894578978  2145 fulton Belgian Style Waffle Chicken Salad Two Eggs Tuna Salad Sandwich Chicken Noodle Baja Chicken Macaroni and Cheese (kids) Western Omlette  53.4    Out for Delivery    Edit
59  Jerry   7894578978  2145 fulton Belgian Style Waffle Chicken Salad Two Eggs Tuna Salad Sandwich Chicken Noodle Baja Chicken Macaroni and Cheese (kids) Western Omlette  53.4    Out for Delivery    Edit
59  Jerry   7894578978  2145 fulton Belgian Style Waffle Chicken Salad Two Eggs Tuna Salad Sandwich Chicken Noodle Baja Chicken Macaroni and Cheese (kids) Western Omlette  53.4    Out for Delivery    Edit
59  Jerry   7894578978  2145 fulton Belgian Style Waffle Chicken Salad Two Eggs Tuna Salad Sandwich Chicken Noodle Baja Chicken Macaroni and Cheese (kids) Western Omlette  53.4    Out for Delivery    Edit

    // GET ORDERS BY STATUS
@SuppressWarnings("unchecked")
public List<Orders> getDeliveryKitchen() {
    Criteria crit = session().createCriteria(Orders.class);
    crit.createCriteria("status", "c");
    crit.add(Restrictions.eq("c.idstatus", 2));

    return crit.list();
}

试一试:

Criteria crit = session().createCriteria(Orders.class);
crit.createCriteria("status", "c");
crit.add(Restrictions.eq("c.idstatus", 2));
crit.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);