Boa tarde,
tenho um metodo para Atualizar um usuario e suas permições!
porem da dando:
java.util.ConcurrentModificationException
nao sei o que estou fazendo de errado…
se alguem puder me ajudar nessa
mt grato desde ja
private void mergeUsuario(Usuario usuario) {
EntityManager em = null;
Collection<Permissao> permOld = null;
Collection<Permissao> permNew = null;
try {
em = getEntityManager();
utx.begin();
//usuario banco
Usuario u = em.find(Usuario.class, usuario.getIdUsuario());
//pega lista de rules do banco
permOld = u.getPermissaoCollection();
System.out.println(">>permOld: "+permOld.size());
//pega lista de rules do formulario
permNew = haveRules(usuario);
System.out.println(">>permNew: "+permNew.size());
for (Permissao p : permOld) {
if (permNew.size()==0 || !areThereIn(permNew, p)) {
p = em.getReference(p.getClass(), p.getIdPermissao());
System.out.println(">>remover acesso: "+p.getAcesso()+" ,pk: "+p.getIdPermissao());
Usuario user = p.getUsuarioidUsuario();
user.getPermissaoCollection().remove(p);
user = em.merge(user);
em.remove(p);
}
}
for (Permissao p : permNew) {
if (!areThereIn(permOld, p)) {
em.persist(p);
Usuario user = p.getUsuarioidUsuario();
user.getPermissaoCollection().add(p);
user = em.merge(user);
}
}
utx.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
em.close();
}
}