我不知道我該如何更新用戶角色,我嘗試以下方法:
(注: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
不,你不知道。 –