Java JUnit test class to detect data @XXX

Previously encountered this problem, too long forgotten, and today they met, recorded a long memory.
In fact, check out the data is the number of entities, indicating that the result is still isolated objects

@Test
public void testGetOrderByUserId() {
    for (OrderDetail order : orderDAO.getOrderByUserId(6)) {
        for (OrderItem orderItem : order.getOrderItems()) {
            System.out.println(orderItem);
        }
    }   
}
16709659-514ec75510a6e0e1.png
image.png

Only need to change a little bit, just a little bit, you can remove the desired data.

@Test
public void testGetOrderByUserId() {
    for (OrderDetail order : orderDAO.getOrderByUserId(6)) {
        for (OrderItem orderItem : order.getOrderItems()) {
            System.out.println(orderItem.getId());
        }
    }       
}
16709659-3f5666520cc9b002.png
image.png

Entity class OrderDetail

/**
* 一对多关系 即一个订单内包含多个 orderItem
*/
@OneToMany(mappedBy = "orderDetail", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<OrderItem> orderItems = new ArrayList<>();

Entity class OrderItem

/**
* 多对一关系 即多个orderItem对应一个订单
* 以 order_id 外键相关联
*/
@ManyToOne
@JoinColumn(name = "order_id")
private OrderDetail orderDetail;

As it can be seen with OrderDetail OrderItem many relationship, so OrderDetail to List <OrderItem> OrderItem of the stored list.

JSP also traverse it twice

<c:forEach items="${orderDetails }" var="orderDetail">
    <tr>
        <th scope="row">${orderDetail.getId() }</th>
        <td>
        <c:forEach items="${orderDetail.orderItems}" var="orderItem">
            <a href="${contextRoot}/show/${orderItem.product.id}/product">
              <span>${orderItem.product.name}-${orderItem.buyingPrice}元/本*${orderItem.productCount}本</span>
            </a>
            <br>                                
        </c:forEach>
        </td>
        <td>${orderDetail.getOrderTotal() }</td>
        <td>${orderDetail.getOrderCount() }</td>
        <td>${orderDetail.getShipping().getAddressLineOne() }</td>
        <td>${orderDetail.getShipping().getAddressLineTwo() }</td>
        <td class="text-left">
            <a href="#" class="btn btn-primary"><span class="glyphicon glyphicon-remove"></span></a>
            <a href="#" class="btn btn-success"><span class="glyphicon glyphicon-eye-open"></span></a>
        </td>
        </tr>
</c:forEach>

Guess you like

Origin blog.csdn.net/weixin_34247032/article/details/90956318