Estou tendo problemas ao cadastrar uma entidade que possui um relacionamento ManyToMany, Ele não esta cadastrando os dados na tabela associativa.
A Noticia e cadastrada normalmente, mas nada e cadastrado na associativa noticias_tag
Vou colocar aqui os códigos:
- Mapeamento
Noticia:
@Entity
@Table(name = "not_noticias")
public class Noticia {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "not_id")
private Long id;
@Column(name = "not_titulo")
private String titulo;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@JoinTable(name = "noticias_tag", joinColumns = @JoinColumn(name = "not_id"), inverseJoinColumns = @JoinColumn(name = "tag_id"))
private List<Tag> tags;
}
Tag:
@Entity
@Table(name = "tag_tag")
public class Tag {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "tag_id")
private Long id;
@Column(name = "tag_nome")
private String nome;
@ManyToMany(mappedBy="tags", fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
private List<Noticia> noticias;
}
- Metodo
Cadastro:
@RequestMapping(value = "/cadastro", method = RequestMethod.GET)
private String adicionar(Model model) {
model.addAttribute("jogos", repositorioJogo.findAll());
model.addAttribute("noticia", new Noticia());
model.addAttribute("tags", repositorioTag.findAll());
return "administracao.noticia.cadastro.tiles";
}
@RequestMapping(value = "/cadastro", method = RequestMethod.POST)
private String adicionar(@ModelAttribute("noticia") @Valid Noticia novaNoticia, BindingResult result, Model model){
if (result.hasErrors()) {
return "noticia.cadastro.tiles";
}
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String nomeUsuario = auth.getName();
Usuario usuario = repositorioUsuario.findByUsername(nomeUsuario);
Date data = new Date();
novaNoticia.setData(data);
novaNoticia.setUsuario(usuario);
repositorioNoticia.save(novaNoticia);
return "redirect:/noticias/";
}
- View:
Cadastro:
<c:url var="actionAdicionar" value="/administracao/noticias/cadastro"></c:url>
<form:form action="${actionAdicionar}" method="post" modelAttribute="noticia" cssClass="form-labe">
<div class="form-group input-icon-left">
<i class="glyphicon glyphicon-pencil"></i>
<form:input id="titulo" path="titulo" cssClass="form-control" placeholder="Titulo da Noticia"/>
</div>
<c:forEach items="${tags}" var="tag">
<input type="checkbox" class="checkbox checkbox-inline" value="${tag.id}">${tag.nome}<br>
</c:forEach>
<div class="text-center"> <input type="submit" value="Cadastrar!" class="btn btn-lg btn-block btn-rounded btn-shadow btn-primary" /> </div>
</br>
</form:form>