Java 如何迭代和添加每个;“许多”;在一对多的课堂上
我有两节课。OrderSlip类与orderedItemDescription具有一对多关系Java 如何迭代和添加每个;“许多”;在一对多的课堂上,java,grails,Java,Grails,我有两节课。OrderSlip类与orderedItemDescription具有一对多关系 class OrderSlip { String employeeID int serving int tableNumber static hasMany = [orderedItemDescription: OrderedItemDescription] } class OrderedItemDescription { MenuItem menuI
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时,可以添加许多orderedItemDescription及其属性
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')
}
我在普惠制中也做过类似的事情。我只使用添加按钮向DOM添加数据。然后对于发送订单,我希望我可以像问题一样更新它,因为我还在我的摘要中为每个OrderEditItemDescription添加了许多g:hiddenField
您应该以某种方式持久化每个新实例
OrderedItemDescription
单击添加
-按钮,将状态
标志设置为未完成
,即可将其立即存储在数据库中。保存整个订单时,必须将complete
更改为complete
另一种选择是将项目保留在http会话中。在发送订单时
迭代会话中的项目,并将它们与订单实例一起保存
这两种方法都有优点和缺点,但它们都很有用。我不是已经在http会话中保留了这些项了吗,因为我可以使用js分配一些数据属性,然后在某些事情上使用它们。但是我不知道如何持久保存
OrderedItemDescription
。顺便问一下,状态
标志是什么?如果您明确地将添加项目分配给会话,如session.items=items
,则它们是。否则,它们仅存在于浏览器的DOM模型中status
flag是一个新属性,如果您想实现“立即持久化”方法,可以将它添加到OrderedItemDescription
。保存是标准的newordereditemdescription(订单:订单,用户:用户,…).save()
Ok。也许我只需要使用params获取OrderItemDescription。然后,我如何迭代所有的orderItemDescription
,同时使用新的OrderedItemDescription(..)
保存它们。之后,我将把结果分配给orderSlipInstance.OrderedItemDescription=result
。所有这些仍在updateOrderSlip
Ah下。不需要orderSlipInstance.OrderedItemDescription=result
,因为我可以将每个迭代的属性分配给。现在的问题是如何迭代它们