Ola, estou criando um formulario de cadastro de usuarios confome codigo abaixo:
<h1>Cadastro de usuarios</h1>
<form:form action="${s:mvcUrl('UC#save').build() }" method="post" commandName="usuario" >
<div class="form-group">
<label>Nome</label>
<form:input path="nome" cssClass="form-control"/>
<form:errors path="nome" />
</div>
<div class="form-group">
<label>E-Mail</label>
<form:input type="email" path="email" cssClass="form-control"/>
<form:errors path="email" />
</div>
<div class="form-group">
<label>Senha</label>
<form:input type="password" path="senha" cssClass="form-control"/>
<form:errors path="senha" />
</div>
<div class="form-group">
<form:select path="roles" cssClass="form-control">
<form:option value="none">---SELECIONE o VALOR----</form:option>
<form:options items="${roles }" itemValue="authority" itemLabel="authority"/>
</form:select>
</div>
<div>
<button type="submit" class="btn btn-primary">Salvar</button>
</div>
</form:form>
No meu controller o metodo de salva por enquanto esta dessa forma:
@RequestMapping(method=RequestMethod.POST)
public ModelAndView save(Usuario usuario, RedirectAttributes attributes){
System.out.println(usuario.toString());
dao.save(usuario);
attributes.addFlashAttribute("mensagem","usuario salvo com sucesso");
return new ModelAndView("redirect:usuarios");
}
E ele funcionou bem para o meu primeiro usuario do tipo "ADMIN" e tambem para o do tipo "USER" o problema é que ao tentar cadastrar mais de um usuario do tipo admin ou do tipo user estou recebendo a seguinte exceção:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'ADMIN' for key 'PRIMARY'
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
Eu ja entendi que o erro se da porque da forma que esta o mapeamento ele esta permitindo apenas um usuario por tipo. Minha duvida é como deve ficar meu mapeamento para que eu possa ter mais de um usuario por role? Atualmente meu mapeamento esta dessa forma:
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
private List<Role> Roles = new ArrayList<Role>();
No entanto o ManyToMany nao resolveu.