У меня есть следующие классы домена grails:
A {
belongsTo = [b: B]
}
B {
hasMany = [aClasses: A]
}
В представлении GSP у меня есть форма, в которой пользователь может выбрать множество экземпляров A, чтобы связать их с экземпляром B. Когда пользователь отправляет форму, контроллер, который обрабатывает форму, получает что-то вроде этого:
params: [aClasses: [123,124]]
Пользователь мог удалить ранее добавленные aClasses из B, поэтому я сначала попытался очистить aClasses из B, а затем выполнить addTo, но я получил java.util.ConcurrentModificationException
.
Вот что я делаю в своем действии контроллера:
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)
}
Есть ли способ заставить это работать?