Как очистить и заменить коллекцию в отношениях один-ко-многим в Grails / Groovy
Этот вопрос состоит из двух частей: первая часть посвящена очистке списка, а вторая - назначению владельца объекта.
У меня есть отношение один ко многим между двумя объектами домена в моей модели в Grails. Отношения выглядят так ...
class Person {
static hasMany = [authorities: Role, locations: Location]
}
class Location {
static belongsTo = Person
}
В моем приложенииlocations
список наPerson
полностью обновляется и заменяется новым списком действий пользователя. Какие'S больше я получаю списокLocation
объекты, независимые от связанныхPerson
, Я решаю, к какому человеку применить их, извлекая текущего зарегистрированного пользователя, которого я называюactivePerson
и хорошо для моих целей.
Что я хочу сделать, это удалить все существующие местоположения наactivePerson
и вставьте все новые, связав их сactivePerson
как я иду. У меня есть куча свойств наPerson
который я неЯ не хочу сохранять на этом этапе, поэтому я хочу избежать сохранения всего родительского объекта только потому, что изменились дочерние местоположения.
Я думал об итерацииactivePerson.locations
список и удаление их по одному и полагаясь на GORM / Hibernate для пакетирования запросов и сброса в конце. Это похоже на грубую силу, хотя это может сработать. Я ожидал, что там будетclearLocations
метод или что-то подобное, но я могунайти его.
Если я просто заменюactivePerson.locations
с новым списком и звонитьactivePerson.save(flush:true)
, GORM будет обрабатывать удаление существующих строк?
Во вторых хочу поставить новыйLocation
объекты наactivePerson
, Я снова мог заселитьactivePerson.locations
и сохранить все это, но я бы хотел избежать этого, если смогу. Я могу сохранить их по отдельности, но как мне установитьbelongsTo
на каждойLocation
возражать как я иду?
Итак, резюмируем:
Как очистить список во многих концах коллекции «один ко многим»?Как связать независимые объекты с родительским объектом и сохранить их индивидуально?Спасибо