Como faço para limpar e substituir uma coleção em um relacionamento um-para-muitos em Grails / Groovy

Esta questão é em duas partes, a primeira parte é sobre a limpeza de uma lista e a segunda parte é sobre como atribuir um proprietário a um objeto.

Eu tenho um relacionamento um-para-muitos entre dois objetos de domínio no meu modelo no Grails. O relacionamento parece com isso ...

class Person {

    static hasMany = [authorities: Role, locations: Location]
}

class Location {

    static belongsTo = Person

}

No meu aplicativo olocations lista emPerson é completamente atualizado e substituído por uma nova lista em uma ação do usuário. O que é mais eu recebo a lista deLocation objetos independentes do associadoPerson. Eu resolvo para qual pessoa aplicá-los, recuperando o usuário atualmente logado, que eu chamo deactivePerson e está bem para meus propósitos.

O que eu quero fazer é excluir todos os locais existentes noactivePerson e inserir todos os novos, associando-os com oactivePerson como eu vou. Eu tenho um monte de propriedades emPerson que eu não quero persistir neste momento, então eu quero evitar salvar o objeto pai inteiro apenas porque os locais filhos foram alterados.

Pensei em iterar através doactivePerson.locations lista e excluindo-os um por um e contando com GORM / Hibernate para agrupar as consultas e liberar no final. Isso parece força bruta, embora possa funcionar. Eu estava esperando que houvesse umclearLocations método ou algo semelhante, mas não consigo encontrar um.

Se eu apenas substituir oactivePerson.locations com uma nova lista e chamadaactivePerson.save(flush:true), o GORM manipulará a exclusão das linhas existentes?

Em segundo lugar eu quero colocar o novoLocation objetos paraactivePerson. Mais uma vez eu poderia preencher oactivePerson.locations e salve a coisa toda, mas eu gostaria de evitar isso se eu puder. Posso salvá-los individualmente, mas como faço para definirbelongsTo em cadaLocation Objeto como eu vou?

Então, para recapitular:

Como faço para limpar uma lista no final de uma coleção de um para muitos?Como faço para associar objetos independentes a um objeto pai e persisti-los individualmente?

obrigado

questionAnswers(3)

yourAnswerToTheQuestion