如何在一对多类中迭代并添加每个“many”

时间:2014-03-10 13:59:13

标签: java grails

我有两节课。 OrderSlip类与orderedItemDescription具有一对多的关系。

class OrderSlip {   
    String employeeID
    int serving
    int tableNumber

    static hasMany = [orderedItemDescription: OrderedItemDescription]
}

class OrderedItemDescription {

    MenuItem menuItem
    MenuItemProgressStatus progress//progress
    String descriptionOfOrder
    int quantity = 1

    static belongsTo = OrderSlip
}

现在我的问题是我如何迭代orderedItemDescription以便当我更新orderSlip时,我可以添加许多orderedItemDescriptions及其属性。

def updateOrderSlip(Long id) {
    User currentUser = springSecurityService.currentUser
    def orderSlipInstance = Table.get(id)

    //other codes for orderedItemDescription here
    orderSlipInstance.employeeID = currentUser.username
    orderSlipInstance.serving= Integer.parseInt(params.serving)
    orderSlipInstance.tableNumber= params.tableNumber
    render(action:'server')
}

我在我的gsp中做了类似的事情。我只使用添加按钮向DOM添加数据。然后对于发送订单我希望我可以像问题一样更新它,因为我还在我的摘要中为每个orderedItemDescription添加了许多g:hiddenField

enter image description here

1 个答案:

答案 0 :(得分:0)

您应该以某种方式持久保存每个新实例OrderedItemDescription

点击add - 按钮并将status标记设置为incomplete,即可将其立即存储在数据库中。保存整个订单时,必须将incomplete更改为complete

另一种选择是将项目保留在http会话中。在send order之后,您将遍历会话中的项目,并将它们与订单实例一起保留。

这两种方式都有优点和缺点,但它们都很有用。