Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Criar mais de um usuário

Olá , não consigo criar dois usuários com a mesma permissão de ROLE_ADMIN ... isso seria possível ?

Quando uso o insert que vocês passaram nas aulas da duplicidade de role

insert into Usuario_Role(Usuario_email, roles_nome) values ('admin@casadocodigo.com.br', 'ROLE_ADMIN')

Mensagens do MySQL : Documentação 
#1062 - Entrada 'ROLE_ADMIN' duplicada para a chave 'UK_jnmoadyberbn5oyaybe8dxskj'

como eu colocaria vários cadastros para ser administrador ?

5 respostas

Oi jessica, isso não está acontecendo por que já existe o usuário admin@casadocodigo.com.br cadastrado no banco?

A anotação @Id garante que o email será único:

    @Id
    private String email;

Verifique os registros salvos fazendo um select:

    select * from Usuario_Role;

Se já existir o email, tente cadastrar um email diferente. Aguardo seu feedback

O primeiro cadastro fiz com o meu email pessoal, então não teria duplicidade nisso ... a duplicidade acontece quando quero adicionar um usuário e o usuário não recebe o nome ROLE_ADMIN porque diz que já está cadastrado esse ADMIN ...se eu crio ROLE_ADMIN2 ele inclui o usuário, o problema que terei que criar permissão para todos os ADMIN que criar ... teria como eu criar o usuário e colocar ROLE_ADMIN para os que eu quero ? ... talvez o problema esteja no @onetomany mudei para @manytomany , mas mesmo assim não inclui vários emails com a mesma role ... teria como ?

A relação @OneToMany garante que um usuário pode ter várias permissões - portanto, deve permitir você adicionar vários roles para um usuário específico (a não ser que essa relação já exista!). Você fez o select no banco para checar se essa relação relamente já existe?

Da maneira que está o projeto no curso, é permitido que você relacione a permissão ROLE_ADMINpara mais de um usuário. Portanto, pode ser algum detalhe do seu código que esteja impedindo isso. Primeiro verifique todos os registros salvos na tabela Usuario_Role. Caso não exista, poste aqui o código das suas classes Usuario e Role

solução!

Oi jessica, desculpe, agora entendi a real questão. Você tem razão, por causa da relação @OneToMany não conseguimos relacionar um mesmo 'role' com vários usuários. O correto é modificar para @ManyToMany como você disse.

Para funcionar, modifique em sua classe JPAConfiguration para gerar o banco novamente com a relação correta (de 'update' para 'create'):

properties.setProperty("hibernate.hbm2ddl.auto", "create");

rode a aplicação, e mude novamente para update para não gerar o banco do zero toda vez que você rodar a aplicação:

properties.setProperty("hibernate.hbm2ddl.auto", "update");

e teste acrescentar uma mesma permissão para usuários diferentes no banco.

veja se dá certo. desculpe mais uma vez e qualquer dúvida poste novamente aqui.

Perfeito Thais, muito obrigada eu não havia mudado no banco. Obrigada mesmo

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software