мне интересно, как могу я обновлю пользователь роль, я попытался следующими способами:
(Примечание: User = Personne, UserRole = PersonneRole)
Очистка списка и заменить его новым:Как заменить коллекцию ролей пользователя на другую?
@Transactional
def myaction(Personne personne,List<String> roles){ // roles is a list of authorities
def role
personne.personneRoles*.delete()// tried PersonneRoles.findByPersonne(personne)*.delete() as well
personne.personneRoles.clear()
roles.each { role=Role.findByAuthority(it);personne.personneRoles.add(new PersonneRole(personne,role)) }
if(!personne.save(flush:true))
return false
....
Я следовал this tutorial как хорошо, но не получился:
@Transactional
def action(Personne personne,List<String> roles){
def role
def temp = []
temp += personne.personneRoles
temp.each{personneRole ->
personne.removeFromPersonneRoles(personneRole)
personneRole.delete()
}
roles.each { role=Role.findByAuthority(it);personne.personneRoles.add(new PersonneRole(personne,role)) }
if(!personne.save(flush:true))
return false
...
в обеих случаях я получаю сообщение об ошибке говорю мне, что».... отвергнуто значение [ROLE_ADMIN_APP]
, который является действительной ролью, но уже после этого человека, это означает, что сбор не очищается, любое решение, пожалуйста? спасибо
Возможно, вам понадобится 'personne.save()' между удалением ролей и добавлением новых. –
Есть ли у меня действие @NonTrasctionnal? – hereForLearing
Нет, нет. –