gpt4 book ai didi

grails - 在Grails Controller 中更新HasMany关系

转载 作者:行者123 更新时间:2023-12-02 16:03:13 25 4
gpt4 key购买 nike

我有以下grails域类:

A {
belongsTo = [b: B]
}

B {
hasMany = [aClasses: A]
}

在GSP View 中,我有一个表单,用户可以选择许多A实例来将它们与B实例连接。当用户提交表单时,处理该表单的 Controller 会收到如下内容:
params: [aClasses: [123,124]]

用户可能已经从B中删除了先前添加的aClasses,所以我尝试先清除B的aClasses,然后执行addTo,但得到了 java.util.ConcurrentModificationException

这是我在Controller Action中执行的操作:
def update() {
B b = B.get(params.id)
b.properties = params
b.aClasses.clear()

def newAs = params.aClassIds ? [] + params.aClasses : []
newAs.each {
A a = A.get(it)
b.addToAClasses(a)
}
b.save(flush: true)

}

有没有办法使它起作用?

最佳答案

这是在服务或 Controller 中运行吗?我之前做过类似的事情,但是逻辑是在服务中并且可以正常工作。这种数据库访问应该在服务中运行,因为它们是事务性的。

工作的示例是:

    if(!clone.hasErrors())
{
def projectTasks = Task.withCriteria {
project {
eq('id', project_id.toInteger())
}
}
projectTasks.each{ task ->
clone.addToTasks(task)
}
}

clone.save(flush : true)

关于grails - 在Grails Controller 中更新HasMany关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28026034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com